【问题标题】:Exporting List to CSV using Python使用 Python 将列表导出为 CSV
【发布时间】:2015-11-06 00:51:03
【问题描述】:

我是 python 的新手,这就是我想要实现的目标。我正在尝试将 python 创建的列表导出为 csv 文件,但它似乎不起作用。

我期待看到的:

Name    Address    ID
A         AA       01
B         BB       05
..       ....     ....

但不幸的是,这就是我的输出:

Name    Address    ID
['A', 'AA', '01']
['B', 'BB', '05']

换句话说,它将列表中一行的所有元素合并到输出 CSV 文件的第一列中,而标题元素位于它们各自的列中。我希望在输出文件的各自标题下填充条目。 如果我从一个 csv 文件读取并写入一个文件,我还没有遇到这个问题。

我的代码如下所示:

import csv
fOpen1=open('C:\master.csv')
fOpen2=open('C:\test.csv')

masterFile=csv.reader(fOpen1)
testFile=csv.reader(fOpen2)   

outputFile=open('C:\Output.csv', 'wb')
CSVWriter=csv.writer(outputFile)

masterList=list()
testList=list()
header=testFile.next()
CSVWriter.writerow(header)

for row1 in masterFile:
    if row1[0] not in masterList:
        masterList.append(row1[0])

for row2 in testFile:
    if row2[0] not in masterList:
        testList.append(row2)

CSVWriter.writerows(zip(testList))

您认为我的代码哪里出了问题?任何帮助和建议将不胜感激。

【问题讨论】:

    标签: python list csv


    【解决方案1】:

    问题是你正在做 -

    CSVWriter.writerows(zip(testList))
    

    这会导致传递给writerows() 的列表中的每个元素成为具有单个元素的元组,即列表(您会看到输出到 csv)。示例 -

    >>> l = [[1,2,3,4],[4,5,6,7],[5,5,5,5]]
    >>> list(zip(l))
    [([1, 2, 3, 4],), ([4, 5, 6, 7],), ([5, 5, 5, 5],)]
    

    如果你想直接写testList中的行,你应该这样做-

    CSVWriter.writerows(testList)
    

    如果要转置testList,使行变成列,列变成行,发送到zip()时应该解包-

    CSVWriter.writerows(zip(*testList))
    

    【讨论】:

    • 我最初使用的是没有 zip 的 write 命令,但它不起作用,因为它将行转换为列。所以我开始使用 zip。现在我从代码中删除了 zip,它工作得很好。我现在觉得自己很傻。我想知道我做错了什么。感谢你的快速回复。非常感谢。
    • 如果您想知道出了什么问题,您将需要显示无法正常工作的确切代码,也许您在其他地方转置了行/列导致问题。
    • 我现在完全不知道,因为我在进行更改时不断保存脚本。但是转置对我来说仍然不清楚。我会担心在以后的阶段转置。谢谢。
    猜你喜欢
    • 2017-07-20
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多