2013-07-17 145 views
19

我有5个列表,所有长度都相同,我想将它们写入CSV中的5列。到目前为止,我只能写一个与此代码一栏:将Python列表写入csv中的列

with open('test.csv', 'wb') as f: 
    writer = csv.writer(f) 
    for val in test_list: 
     writer.writerow([val]) 

如果我再添for循环,它只是写道,列表中同一列。任何人都知道获得五个单独列的好方法?

回答

24

改变他们行

rows = zip(list1,list2,list3,list4,list5) 

然后就

import csv 

with open(newfilePath, "w") as f: 
    writer = csv.writer(f) 
    for row in rows: 
     writer.writerow(row) 
+0

我是这样的:阵列([ - 23],D类= FLOAT32),阵列([ - 0.39999986],D类= FLOAT32 ...如何获得没有类型的纯粹值? –

4

您可以使用izip您的名单相结合,然后重复他们

for val in itertools.izip(l1,l2,l3,l4,l5): 
    writer.writerow(val) 
+4

值得注意的是'itertools.izip()'在Python 3.x中不存在,并且'zip()'内置了一个迭代器,所以这是一个简单替换。还要注意,如果你有一个列表列表,你可以使用解包操作符('zip(* lists)')。这是比变量'l1','l2'等更好的设计... –

3

下面的代码将蟒蛇名单进入csv的列

import csv 
from itertools import zip_longest 
list1 = ['a', 'b', 'c', 'd', 'e'] 
list2 = ['f', 'g', 'i', 'j'] 
d = [list1, list2] 
export_data = zip_longest(*d, fillvalue = '') 
with open('numbers.csv', 'w', encoding="ISO-8859-1", newline='') as myfile: 
     wr = csv.writer(myfile) 
     wr.writerow(("List1", "List2")) 
     wr.writerows(export_data) 
myfile.close() 

输出看起来像这样

enter image description here