Python paser pour transformer txt kanban

voix
-2
  • Rubrique1:

    • choses à faire blabla # Todo [20/02/2020]
    • des choses faites # blabla [15/01/2020] Effectué
  • Topi2:

    • ....

Quelle serait la meilleure façon de construire un analyseur de python pour TRANSFOR cette chaîne dans une liste kanban: Todo: - Date Action1 ... Fait: - Action2

Je ne sais pas c'est une question de stockoverflow mais ne sais pas où le poster.

Créé 13/02/2020 à 23:54
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Enfin, je fait ceci:

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

Et vous l'utilisez comme ceci:

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

Sûr qu'il n'est pas la façon la plus pythonique mais il fait le travail. L'étape suivante serait d'avoir un éditeur web en direct qui Tranform le kanban PDCA que vous prenez des notes .... Je me demandais si j'utiliser FLEXX ou remi, mais c'est une autre histoire

Créé 24/02/2020 à 23:45
source utilisateur

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