Python PASER przekształcić txt do Kanban

głosy
-2
  • Topic1:

    • rzeczy do zrobienia blabla # Todo [20/02/2020]
    • Things Done blabla # Gotowe [15/01/2020]
  • Topi2:

    • ....

Jaki byłby najprostszy sposób zbudować parsera Pythona do transfor ten ciąg na liście kanban: Todo: - data działania1 ... Gotowe: - Akcja! 2

Nie jestem pewien, że jest to kwestia stockoverflow ale nie wiem gdzie go zakładać.

Utwórz 13/02/2020 o 21:54
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

W końcu zrobiłem to:

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

I używać go tak:

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

Pewien, że nie jest to najbardziej pythonic sposób, ale spełnia swoje zadanie. Następnym krokiem byłoby mieć żywo redaktor internetowy, który tranform się Kanban PDCA jak jesteś notatek .... zastanawiałem się, czy użyłbym FLEXX lub remi, ale to już inna historia

Odpowiedział 24/02/2020 o 21:45
źródło użytkownik

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