Essai du parseur d'emacs-org orgparse pour python

Je ne peux pas écrire emacs-lisp, donc j'ai cherché un analyseur en mode org avec python, donc je l'ai essayé. Essayez de lire l'exemple de fichier organisationnel et de convertir le résultat de la lecture en texte organisationnel.

Cliquez ici pour le document officiel. https://orgparse.readthedocs.io/en/latest/

L'exemple suivant est utilisé cette fois.

$ cat sample.org
* Heading 1
   :PROPERTIES:
   :ID:       48c4a07e-95c1-41ff-a1f0-8e2f6ad88761
   :END:
** TODO [#B] Heading 2
   DEADLINE: <2020-05-09 Sat>
** DONE Heading 2
   CLOSED: [2020-05-09 Sat 22:21]
*** Heading 3
    SCHEDULED: <2020-05-09 Sat>
* Heading 1      :ARCHIVE:

Tout d'abord, installez les packages requis. Il existe des packages séparés pour la lecture et l'écriture.

$ pip install orgparse orger

L'exemple de code pour la lecture et l'écriture est ci-dessous.

$ cat org-parse.py
from orgparse import load
from orger import inorganic

root = load('sample.org')

print('--- for node in root[1:] ---')
#Exécuter dans l'ordre à partir du nœud de la ligne supérieure
for node in root[1:]:
    print(node.heading)

#Exécuter dans l'ordre à partir du nœud de la hiérarchie supérieure
print('--- for node in root.children ---')
# for node in root.children
for node in root.children:
    print(node.heading)

#Copier dans le package pour écriture
def get_node(node):
    children = [get_node(child) for child in node.children]
    scheduled = None if node.scheduled is None else node.scheduled.start

    return inorganic.node(
        heading=node.heading, #Lire le titre
        todo=node.todo, # TODO,Lire FAIT etc.
        tags=node.tags, #Lecture de balises
        scheduled=scheduled, #lecture programmée,Il y a aussi une date limite pour la lecture
        properties=node.properties, #Le chargement individuel est un nœud.get_property('ID')
        body=node.body, #Lire le contenu
        children=children
    )
print('--- write to org file ---')
for node in root.children:
    node = get_node(node) 
    print(node.render())

Résultat d'exécution

$ python3 org-parse.py
--- for node in root[1:] ---
Heading 1
Heading 2
Heading 2
Heading 3
Heading 1
--- for node in root.children ---
Heading 1
Heading 1
--- write to org file ---
* Heading 1
:PROPERTIES:
:ID: 48c4a07e-95c1-41ff-a1f0-8e2f6ad88761
:END:
** TODO Heading 2
** DONE Heading 2
*** Heading 3
SCHEDULED: <2020-05-09 Sat>
* Heading 1 :ARCHIVE:

J'ai pu facilement lire et écrire des fichiers org. Avec cela, il semble que todo agrégation, etc. peut être écrit avec un script python. Depuis le 9 mai 2020, il semble que le côté inorganique du package en écriture seule ne prend pas en charge la fermeture ou la date limite.

Le package d'écriture de l'organisation est encore au stade provisoire et il semble que l'API soit à l'étude. Problèmes liés: https://github.com/karlicoss/orgparse/issues/11

À propos, les référentiels associés cette fois sont les suivants. Tous sont fabriqués par la même personne.

En particulier, le package appelé orger orgs github, pdf, tiwtter, etc. Il semble que le but est de gérer toutes les informations dans org. C'est comme la version emacs-org d'Evernote. Je veux l'utiliser un jour.

Recommended Posts

Essai du parseur d'emacs-org orgparse pour python
[Python] Essayez pydash de la version Python de lodash
Essayez Progate Free Edition [Python I]
pyenv-changer la version python de virtualenv
À propos de l'environnement virtuel de Python version 3.7
le zen de Python
Écrire une note sur la version python de python virtualenv
Essayez d'utiliser le module de collections (ChainMap) de python3
Utilisons la version Python du module API Confluence.
Aligner la version de chromedriver_binary
Vers la retraite de Python2
Mise à niveau de python Anaconda
Vérifiez la version OpenSSL de python 2.6
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Mettez la dernière version de Python dans Linux (Debian) du Chromebook
Essayez d'obtenir la liste des fonctions du paquet Python> os
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Quelle est la version TLS par défaut du module de requêtes python?
[Python] Version Taple du menu déroulant de la préfecture
Tester la version du module argparse
L'histoire de Python et l'histoire de NaN
Élever la version de pyenv elle-même
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Essayez le SDK Python LINE Pay
Existence du point de vue de Python
Version Ideone> Python: 3.5 (au 29 août 2017)
Comment obtenir la version Python
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Essayez d'utiliser le module Python Cmd
À propos de la liste de base des bases de Python
Apprenez les bases de Python ① Débutants élémentaires
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
Essayez de transcrire la fonction de masse stochastique de la distribution binomiale en Python
Premier python ② Essayez d'écrire du code tout en examinant les fonctionnalités de python
Comment mettre à jour la version Python de Cloud Shell dans GCP
Changer la longueur des chaînes csv Python
Essayez d'utiliser l'API Wunderlist en Python
Vérifiez le comportement du destroyer en Python
[Python3] Comprendre les bases de Beautiful Soup
Essayez d'utiliser l'API Kraken avec Python
Comment vérifier la version de Django
Passez le chemin du module python importé
Notes d'apprentissage depuis le début de Python 1
Vérifier l'existence du fichier avec python
Essayez Python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
[Python3] Réécrire l'objet code de la fonction
Je ne connaissais pas les bases de Python
Le résultat de l'installation de python sur Anaconda
[python] Vérifier la consommation de mémoire des variables
Vérifiez le chemin du module importé Python