2015-08-13 28 views
2

我是python的新手,这就是我想要实现的目标。我试图导出一个python创建列表作为csv文件,但它似乎不工作。使用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)) 

你觉得我在哪里我的代码的问题呢?任何帮助和建议将不胜感激。

回答

1

的问题是,你正在做的 -

CSVWriter.writerows(zip(testList)) 

这将导致在传递给writerows()列表中的每个元素是一个单一的元素,它是名单(你看到outputed到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,使行成为列,列变为行,你

CSVWriter.writerows(zip(*testList)) 
+0

我最初使用写命令没有拉链,它不工作,因为它是行调换成列 - 发送到zip()时应解开。所以我开始使用zip。现在我从代码中删除了zip,它工作得很好。我现在觉得很愚蠢。我不知道我在做什么错。感谢你的快速回复。非常感谢。 – VGu

+0

如果您想知道哪里出了问题,您需要显示不能正常工作的确切代码,也许您在某个其他地方调换了行/列导致问题。 –

+0

我现在完全不知道,因为我正在不断地保存脚本,因为我正在进行更改。但转置仍然不清楚。我会担心在晚些时候换位。谢谢。 – VGu