【问题标题】:CSV file not properly filled up with detailsCSV 文件未正确填写详细信息
【发布时间】:2018-10-02 04:39:09
【问题描述】:
import csv
TextFileContent = open('tickets.txt')
with open('example4.csv', 'w') as csvfile:
    fieldnames = ['Author', 'ticket number', 'Revision']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for TextLine in TextFileContent:
        if 'Revision:' in TextLine:
            tmp=TextLine.replace('Revision:', "")
            print(tmp)
            writer.writerow({'Revision': tmp})
        elif 'Author:' in TextLine:
            tmp=TextLine.replace("Author:", "")
            print(tmp)
            writer.writerow({'Author': tmp})
        elif 'Contributes to:' in TextLine:
            tmp=TextLine.replace("Contributes to:", "")
            print(tmp)
            writer.writerow({'ticket number': tmp})

大家好,我在上面开发的 python 脚本从文本文件中提取“作者”、“票证”和“修订”详细信息,然后将该信息填充到 CSV 文件中。

现在我可以提取所有信息,但数据未正确填写在 CSV 文件中。

文本文件内容如下

Revision: 22904
Author: Userx
Contributes to: CF-1159


Revision: 22887
Author: Usery
Contributes to: CF-955


Revision: 22884
Author: UserZ
Contributes to: CPL-7768

我希望得到如下 CSV 文件的结果

Author  ticket number   Revision
Userx    CF-1159        22904
Usery    CF-955         22887
UserZ    CPL-7768       22884

【问题讨论】:

    标签: python csv export-to-csv


    【解决方案1】:

    您的代码在找到 any 字段后立即写入一行,而不是等到它读取完整的字段集。下面的编辑等待一个完整的集合,然后写入行。

    with open('/tmp/out.csv', 'w') as csvfile:
        fieldnames = ['Author', 'ticket number', 'Revision']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        row = {}
        for TextLine in TextFileContent:
            if 'Revision:' in TextLine:
                row['Revision'] = TextLine.replace('Revision: ', "")
            elif 'Author:' in TextLine:
                row['Author'] = TextLine.replace("Author: ", "")
            elif 'Contributes to:' in TextLine:
                row['ticket number'] = TextLine.replace("Contributes to: ", "")
            if len(row) == len(fieldnames):
                writer.writerow(row)
                row = {}
    

    请注意,除非所有记录都包含所有字段,否则这将无法正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多