我正在尝试使用Python将.txt文件转换为csv文件。这个txt不是常规的(至少我从未见过这样的东西,它基本上是这样的:
key a: foo
key b: bar
$$$
$$$
key a: foo1
key b: bar1
$$$
$$$
key a: foo2
key b: bar2
我只想获得以下csv:
foo, bar
foo1, bar1
foo2, bar2
通过简单地将文件作为字符串和分割来完成,我没有任何困难,但我想知道是否有更优雅的方法来使用现有的库来做到这一点。 提前谢谢!
答案 0 :(得分:0)
这就是我手动操作的方法:
with open('input.txt', 'r') as f:
file_content = f.read()
raw_res = file_content.split('$$$\n$$$\n')
res = []
for item in raw_res:
item_dict = {}
keyvals = item.split('\n')
for keyval in keyvals:
if keyval != '' and ':' in keyval:
key, val = keyval.split(':', 1)
item_dict[key] = val.replace(",", " ") ## In order to ensure that val won't break the csv formatting later
res.append(item_dict)
keys = res[0].keys
with open('output.csv', 'w') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(res)