2014-03-31 87 views
0

我有三个列表a,bc,我想以列的形式写入csv文件。我遇到了麻烦(因为data有这些行),还有写入csv。这是我的。在Python中编写csv文件3

import csv 

my_output=open('myfile.csv','wb') 
mywriter=csv.writer(csv_out) 

a=[1,3,5,7] 
b=[2,4,6,8] 
c=[0,0,0,0] 
data=[a,b,c] 

for item in data: 
    mywriter.writerow(item) 
my_output.close() 
+2

文档凡'csv_out'定义?你的意思是'my_output'? –

+0

可能的重复:[Python:CSV按列而不是行写入](http://stackoverflow.com/questions/4155106/python-csv-write-by-column-rather-than-row) –

+0

是啊,已将其更改为my_output。现在我收到一个错误: – jenny

回答

0

Excel将数据存储在Row-major order中。

你必须首先打破了问题了下来:

a = [1,3,5,7] 
b = [2,4,6,8] 
c = [0,0,0,0] 
data = [a,b,c] 

for i in range(len(data[0])): 
    for j in range(len(data)): 
     print data[j][i], 
    print '' 

输出:

1 2 0 
3 4 0 
5 6 0 
7 8 0 

全部放在一起:

import csv 

my_output = open('myfile.csv', 'wb') 
mywriter = csv.writer(my_output) 

a = [1,3,5,7] 
b = [2,4,6,8] 
c = [0,0,0,0] 
data = [a,b,c] 

for i in range(len(data[0])): 
    row = [data[j][i] for j in range(len(data))] 
    mywriter.writerow(row) 

my_output.close() 

较短(更安全)版本:

import csv 

my_output = open('myfile.csv', 'wb') 
mywriter = csv.writer(my_output) 

a = [1,3,5,7] 
b = [2,4,6,8] 
c = [0,0,0,0] 
data = [a,b,c] 

for row in zip(*data): 
    mywriter.writerow(row) 

my_output.close() 

有关此内置功能的信息,请参阅zip([iterable, ...])