在Python中读取非标准数据库

时间:2017-08-30 17:07:41

标签: file io readfile

我正在尝试使用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

通过简单地将文件作为字符串和分割来完成,我没有任何困难,但我想知道是否有更优雅的方法来使用现有的库来做到这一点。 提前谢谢!

1 个答案:

答案 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)