【发布时间】:2013-10-17 21:01:32
【问题描述】:
我想使用 Python 将纯结构化文本文件转换为 CSV 格式。
输入看起来像这样
[-------- 1 -------]
Version: 2
Stream: 5
Account: A
[...]
[------- 2 --------]
Version: 3
Stream: 6
Account: B
[...]
输出应该是这样的:
Version; Stream; Account; [...]
2; 5; A; [...]
3; 6; B; [...]
即输入是由[----<sequence number>----] 分隔并包含<key>: <values>-pairs 的结构化文本记录,输出应为每行包含一条记录的CSV。
我可以通过
将<key>: <values>-pairs 恢复为 CSV 格式
colonseperated = re.compile(' *(.+) *: *(.+) *')
fixedfields = re.compile('(\d{3} \w{7}) +(.*)')
-- 但我无法识别结构化文本记录的开头和结尾以及重写为 CSV 行记录。此外,我希望能够区分不同类型的记录,即区分 - 比如 - Version: 2 和 Version: 3 类型的记录。
【问题讨论】:
-
您的输入文件不是 CSV 格式;它是结构化的,但不是分隔符分隔的。你的输出是。
-
您希望如何处理不同版本的记录?
-
不同类型的记录有不同数量的元素。
-
啊,这很重要;您的输出也不是严格的 CSV。我在下面的回答假设记录是每个相同的大小。
-
你知道事先使用了哪些字段吗?还是您需要先从输入文件中收集这些?