如何将用`:`分隔的数据值从多个文本文件复制到带有python的受尊重标题的csv?

时间:2017-06-03 07:01:33

标签: python csv parsing

尝试使用以下格式将文本文件中的类型,数字,名称等变量旁边的文本复制到csv:

Type      Name     Phone     email     Mailing Address

我有很多这种形式的文本文件:

Type: zxyz
Number: 34567892
Name: xyzzzxx, yuw
Phone Number: 000-000-0000
Email Address: any@gmail.com
Mailing Address: bla bla bla

我无法从文本文件中复制搜索字符串旁边的文本并将其写入csv文件。

1 个答案:

答案 0 :(得分:0)

您可以将一个文件的内容转换为如下字典:

with open('file.txt') as f:
    d = dict(line.strip().split(': ') for line in f)

然后使用csv.DictWriter将字典写入CSV文件:

import csv

fieldnames = ['Type', 'Name', 'Phone Number', 'Email Address', 'Mailing Address']
filenames = ['a.txt', 'b.txt', 'c.txt']

with open('out.csv', 'w') as outfile:
    writer = csv.DictWriter(outfile, fieldnames)
    writer.writerheader()
    for filename in filenames:
        with open(filename) as f:
            d = dict(line.strip().split(': ') for line in f)
            writer.writerow(d)

这会将输入文件中的所有数据复制到单个CSV文件中。如果要排除某些字段,请在调用fieldnames之前调整writerow()并从字典中删除不需要的字段。您还可以通过更改fieldnames和字典中的字段名称来重命名字段。