Python PASER átalakítani a TXT kanban

szavazat
-2
  • Topic1:

    • dolgom blabla # Todo [20/02/2020]
    • dolgokat blabla # Kész [15/01/2020]
  • Topi2:

    • ....

Mi lenne a legegyszerűbb módja annak, hogy össze egy python elemzőt transzformáns ezt a fonalat egy kanban lista: Todo: - 1. program időpontja ... Kész: - 2. program

Nem biztos, hogy ez egy stockoverflow kérdés, de nem tudom, hova tegye azt.

A kérdést 13/02/2020 23:54
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Végül tettem ezt:

import re
import collections
import yaml

def t2k(file):
    with open(file)as f:
        txt=f.read()

    regex=r"(?sm)\* (.*?) :(\s+-.*?)(?=^\*|\Z)"
    regactions=r'  - ([^\#]*)(?P<status>#.) (\[.*])'

    # list of topics with action and status    
    topics=re.finditer(regex,txt,re.MULTILINE)


    # Initiate kanban liste
    list_kanban=[]


    for topic in topics:
        #parse action in topics
        actions=re.finditer(regactions,topic[2])
        for action in actions:
            # create a kanban for each action
            kanban={'topic':topic[1], 'actions':action[1]}
            list_kanban.append({action['status'][-1:]:kanban})


    # group list kanban by status    
    dict_kanban = collections.defaultdict(list)  
    for d in list_kanban:
        for k, v in d.items():
            dict_kanban[k].append(v)

    result=[]
    for statut in dict_kanban.keys():
        single_topic=[]
        topi_dict={}
        for d in dict_kanban[statut]:
            if d['topic'] not in single_topic:
                single_topic.append(d['topic'])
                topi_dict[d['topic']]=[d['actions']]
            else:
                topi_dict[d['topic']].append(d['actions']) 
        result.append({statut:topi_dict})
    #%%

    ff = open('PDCA.yaml', 'w+')
    yaml.dump(result, ff, allow_unicode=True, default_flow_style=False,sort_keys=False)
    print('-')
    print(result)
    return result

És akkor használja, mint ez:

import PDCA
PDCA.t2k('txt.md')
with open('PDCA.yaml') as f:
    print(f.read())

Benne, hogy nem a legnagyobb pythonic módon, de ez a munka. Következő lépés az lenne, hogy van egy élő web szerkesztő, amely transzformációval a PDCA kanban, mint te jegyzeteket .... arra gondoltam, ha szeretném használni FlexX vagy Remi, de ez egy másik történet

Válaszolt 24/02/2020 23:45
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more