使用Python将列表导出到CSV

VGu

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

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

阿南德·库玛(Anand S Kumar)

问题是您正在做-

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章