Test von emacs-org parser orgparse für Python

Ich kann kein Emacs-Lisp schreiben, also habe ich nach einem Parser im Organisationsmodus mit Python gesucht und es ausprobiert. Versuchen Sie, die Beispiel-Organisationsdatei zu lesen und das Leseergebnis in Organisationstext umzuwandeln.

Klicken Sie hier für das offizielle Dokument. https://orgparse.readthedocs.io/en/latest/

Dieses Mal wird das folgende Beispiel verwendet.

$ 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:

Installieren Sie zunächst die erforderlichen Pakete. Es gibt separate Pakete zum Lesen und Schreiben.

$ pip install orgparse orger

Der Beispielcode zum Lesen und Schreiben ist unten.

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

root = load('sample.org')

print('--- for node in root[1:] ---')
#Ausführen in der Reihenfolge vom Knoten in der oberen Reihe
for node in root[1:]:
    print(node.heading)

#Ausführen in der Reihenfolge vom Knoten in der oberen Hierarchie
print('--- for node in root.children ---')
# for node in root.children
for node in root.children:
    print(node.heading)

#Zum Schreiben in das Paket kopieren
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, #Titel lesen
        todo=node.todo, # TODO,Lesen Sie FERTIG usw.
        tags=node.tags, #Tag lesen
        scheduled=scheduled, #geplantes Lesen,Es gibt auch eine Frist zum Lesen
        properties=node.properties, #Individuelles Laden ist Knoten.get_property('ID')
        body=node.body, #Inhalt lesen
        children=children
    )
print('--- write to org file ---')
for node in root.children:
    node = get_node(node) 
    print(node.render())

Ausführungsergebnis

$ 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:

Ich konnte leicht Organisationsdateien lesen und schreiben. Damit scheint es, dass ToDo-Aggregation usw. mit einem Python-Skript geschrieben werden kann. Ab dem 9. Mai 2020 scheint die anorganische Seite des Nur-Schreib-Pakets keine Schließung oder Frist zu unterstützen.

Das org write-Paket befindet sich noch in der vorläufigen Phase, und es scheint, dass die API in Betracht gezogen wird. Verwandte Themen: https://github.com/karlicoss/orgparse/issues/11

Übrigens sind die zugehörigen Repositorys diesmal wie folgt. Alle werden von derselben Person hergestellt.

Insbesondere das Paket namens orger orgs github, pdf, tiwtter usw. Es scheint, dass das Ziel darin besteht, alle Informationen in org zu verwalten. Es ist wie die emacs-org-Version von evernote. Ich möchte es eines Tages benutzen.

Recommended Posts

Test von emacs-org parser orgparse für Python
[Python] Probieren Sie pydash der Python-Version von lodash aus
Probieren Sie Progate Free Edition [Python I]
pyenv-change die Python-Version von virtualenv
Informationen zur virtuellen Umgebung von Python Version 3.7
der Zen von Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Verwenden wir die Python-Version des Confluence-API-Moduls.
Richten Sie die Version von chromedriver_binary aus
Auf dem Weg zum Ruhestand von Python2
Upgrade von Python Anaconda
Überprüfen Sie die OpenSSL-Version von Python 2.6
Über die Funktionen von Python
Die Kraft der Pandas: Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Stellen Sie die neueste Version von Python in Linux (Debian) von Chromebook
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Was ist die Standard-TLS-Version des Python-Anforderungsmoduls?
[Python] Taple-Version des Pulldowns der Präfektur
Testen Sie die Version des Argparse-Moduls
Die Geschichte von Python und die Geschichte von NaN
Erhöhen Sie die Version von pyenv selbst
[Python] Der Stolperstein des Imports
Erster Python 3 ~ Der Beginn der Wiederholung ~
Probieren Sie das Python LINE Pay SDK aus
Existenz aus Sicht von Python
Ideone> Python-Version: 3.5 (Stand 29. August 2017)
So erhalten Sie die Python-Version
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
Überprüfung der Grundlagen von Python (FizzBuzz)
Versuchen Sie es mit dem Python Cmd-Modul
Informationen zur Grundlagenliste der Python-Grundlagen
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Versuchen Sie, die stochastische Massenfunktion der Binomialverteilung in Python zu transkribieren
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
So aktualisieren Sie die Python-Version von Cloud Shell in GCP
Ändern Sie die Länge der Python-CSV-Zeichenfolgen
Versuchen Sie es mit der Wunderlist-API in Python
Überprüfen Sie das Verhalten des Zerstörers in Python
[Python3] Verstehe die Grundlagen von Beautiful Soup
Versuchen Sie, die Kraken-API mit Python zu verwenden
So überprüfen Sie die Version von Django
Übergeben Sie den Pfad des importierten Python-Moduls
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python
Versuchen Sie Python
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Ich kannte die Grundlagen von Python nicht
Das Ergebnis der Installation von Python auf Anaconda
[Python] Überprüfen Sie den Speicherverbrauch von Variablen
Überprüfen Sie den Pfad des importierten Python-Moduls