python - 使用 Python 将列表导出为 CSV

标签 python list csv

我是 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))

您认为我的代码哪里出了问题?非常感谢任何帮助和建议。

最佳答案

问题是你在做 -

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

关于python - 使用 Python 将列表导出为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981697/

相关文章:

python - 根据python中的值提取元组

python 上下文管理器换行问题

python - 如何将此文本文件格式解析为 CSV 格式?

r - 将制表符分隔的数据解析为 R data.table/data.frame 时如何排除某些行?

python - 我可以在不显式序列化的情况下将 python 字典存储在 google 的 BigTable 数据存储中吗?

python - 使用 "r"和 re.sub 中的变量

java - Java 中 ContainsAll 的成本是多少?

python - 错误 zip 参数 #1 必须支持迭代

Python 字符串列表中频繁出现的列表

python - 使用 Python 构建 KML