【问题标题】:How to copy data values separated with `:` from multiple text file to csv with respected headers with python?python - 如何使用python将用`:`分隔的数据值从多个文本文件复制到带有尊重标题的csv?
【发布时间】:2017-06-03 07:01:33
【问题描述】:

尝试将类型、数字、名称等变量旁边的文本从文本文件复制到 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 文件。

【问题讨论】:

  • 你已经得到了什么,那代码不起作用怎么办?您需要提供minimal reproducible example 以便人们能够帮助您解决问题。
  • 需要更多信息,例如您要搜索什么?你想复制什么信息。
  • @rakesh 我正在尝试将类型、数字、电话号码、电子邮件地址 ext 的值从文本文件复制到 csv,并在行中使用受尊重的标题。
  • @errata Master,我正在尝试将数据值从多个文本文件复制到带有尊重标题的 csv。

标签: python csv parsing


【解决方案1】:

您可以像这样将一个文件的内容转换为字典:

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 和字典中的字段名称来重命名字段。

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 2016-11-30
    • 2014-08-24
    • 2013-12-16
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多