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 など)。ただし、必要なものの完全なリストをハードコードすることはできます。
各グループは空の行で区切られているため、データの各チャンクを個別に処理できるように分割を使用しました。
input = file.read().split("\n\n")
for chunk in input:
process(chunk)
文字列の検索/スプライス、itertools.groupby、さらには正規表現を使用するいくつかのアプローチを見てきました。ヘッダーの場所を見つけるために「[AZ]*:」の正規表現を実行することを考えていましたが、後で別のヘッダーに到達するまで複数行を引き出す方法がわかりません (DEF の後の複数行のデータなど)。最初の例のエンティティ)。
提案をいただければ幸いです。