43

我有 5 个长度相同的列表,我想将它们写入 CSV 中的 5 列。到目前为止,我只能使用以下代码将一个写入列:

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

如果我添加另一个for循环,它只会将该列表写入同一列。有人知道获得五个单独列的好方法吗?

4

7 回答 7

58

将它们更改为行:

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)
于 2013-07-17T15:43:13.390 回答
29

以下代码将 python 列表写入 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()

输出看起来像这样

在此处输入图像描述

于 2017-11-17T13:40:35.750 回答
5

您可以使用izip来组合您的列表,然后迭代它们

for val in itertools.izip(l1,l2,l3,l4,l5):
    writer.writerow(val)
于 2013-07-17T15:45:25.770 回答
5

如果您乐于使用 3rd 方库,您可以使用 Pandas 做到这一点。好处包括无缝访问专门的方法和行/列标签:

import pandas as pd

list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = [7, 8, 9]

df = pd.DataFrame(list(zip(*[list1, list2, list3]))).add_prefix('Col')

df.to_csv('file.csv', index=False)

print(df)

   Col0  Col1  Col2
0     1     4     7
1     2     5     8
2     3     6     9
于 2018-11-22T12:20:00.120 回答
2

我不想导入除 csv 之外的任何内容,而且我所有的列表都有相同数量的项目。这里的最佳答案似乎使列表各成一行,而不是每列一列。因此,我在这里接受了答案并想出了这个:

import csv
list1 = ['a', 'b', 'c', 'd', 'e']
list2 = ['f', 'g', 'i', 'j','k']
with open('C:/test/numbers.csv', 'wb+') as myfile:
    wr = csv.writer(myfile)
    wr.writerow(("list1", "list2"))
    rcount = 0
    for row in list1:
        wr.writerow((list1[rcount], list2[rcount]))
        rcount = rcount + 1
    myfile.close()
于 2019-02-01T16:40:41.850 回答
1

我只是想添加到这个-因为坦率地说,我用头撞了一段时间-虽然对python很陌生-也许它会帮助其他人。

 writer.writerow(("ColName1", "ColName2", "ColName"))
                 for i in range(len(first_col_list)):
                     writer.writerow((first_col_list[i], second_col_list[i], third_col_list[i]))
于 2020-05-24T18:46:19.190 回答
0
import csv
dic = {firstcol,secondcol} #dictionary
csv = open('result.csv', "w") 
for key in dic.keys():
    row ="\n"+ str(key) + "," + str(dic[key]) 
    csv.write(row)
于 2018-10-13T18:45:39.533 回答