Parsing Emacs Orgmode files with Python
Here’s some experimental (alpha) code to parse Emacs Orgmode files. It’s far from complete, I only aim at parsing basic TODO strings with level (**), status (TODO, DONE), priority (#A, #B, #C), task and tags.
2016-09-03: It takes my actual orgmode file, so it’s working fine.
2016-09-04: I created a github repo, code updates will be added there, only: https://github.com/UweZiegenhagen/python-orgmode-parser
# -*- coding: utf-8 -*- import re def parseEmaceOrgmode(s): r = '^([\*]+)?\s?(TODO|PROGRESSING|FEEDBACK|VERIFY|POSTPONED|DELEGATED|CANCELLED|DONE)?\s?(\[#[A|B|C]\])?\s?(.*?)\s*(:(.*):)?$' m = re.search(r,s) level = m.group(1) if (level is not None): level = len(level) prio = m.group(3) if (prio is not None): prio = prio[2:3] tags = [] a = m.group(5) if a != None: b = len(a)-1 a= a[1:b] a = a.split(':') tags.append(a) return(level, m.group(2), prio, m.group(4), tags) with open("../orgmode.org", "r") as ins: for line in ins: level, status, priority, task, tags = parseEmaceOrgmode(line) if level is not None: print('Level:', level) print('Status:', status) print('Priority:', priority) print('Task:', task) print('Tags:',tags,'\n\n') |