Python Paser transformovat txt pro kanban

hlasů
-2
  • Topic1:

    • co dělat blabla # Todo [20/02/2020]
    • Things Done blabla # Done [15/01/2020]
  • Topi2:

    • ....

Jaký by měl být nejjednodušší způsob, jak postavit python analyzátor transfor tento řetězec v kanbanu seznamu: Todo: - datum action1 ... Hotovo: - action2

Nejste si jisti, to je stockoverflow otázka, ale nevím, kde ji zveřejnit.

Položena 13/02/2020 v 23:54
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Nakonec jsem se toto:

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

A jej použít takto:

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

Jistá, že to není zrovna pythonic způsobem, ale to dělá práci. Dalším krokem by bylo mít živý webový editor, který by proměnit PDCA kanban, jak jste si poznámky .... Napadlo mě, jestli bych použít Flexx nebo Remi, ale to je jiný příběh

Odpovězeno 24/02/2020 v 23:45
zdroj uživatelem

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