我试图找到在 Python 中解析文件并创建命名元组列表的最佳方法,每个元组代表一个数据实体及其属性。数据看起来像这样:
UI: T020
STY: Acquired Abnormality
ABR: acab
STN: A1.2.2.2
DEF: An abnormal structure, or one that is abnormal in size or location, found
in or deriving from a previously normal structure. Acquired abnormalities are
distinguished from diseases even though they may result in pathological
functioning (e.g., "hernias incarcerate").
HL: {isa} Anatomical Abnormality
UI: T145
RL: exhibits
ABR: EX
RIN: exhibited_by
RTN: R3.3.2
DEF: Shows or demonstrates.
HL: {isa} performs
STL: [Animal|Behavior]; [Group|Behavior]
UI: etc...
虽然有几个属性是共享的(例如 UI),但有些不是(例如 STY)。但是,我可以硬编码一个详尽的必要列表。
由于每个分组都由一个空行分隔,因此我使用了 split 以便可以单独处理每个数据块:
input = file.read().split("\n\n")
for chunk in input:
process(chunk)
我见过一些方法使用字符串查找/拼接、itertools.groupby 甚至正则表达式。我正在考虑做一个 '[AZ]*:' 的正则表达式来查找标题的位置,但我不确定如何在到达另一个标题之前拉出多行(例如在 DEF 之后的多行数据第一个示例实体)。
我很感激任何建议。