首页 > 解决方案 > 在 Python 3 中,如何将两个字符串列表写入两列的 csv 文件?

问题描述

我目前在 Python 中有两个列表,如下所示:

list1 = ['Steve', 'Mark', 'Jeff', ... ]
list2 = ['steve@mac.com', 'mark223@mac.com', 'jeffrey@mac.com', ...]

由此,我试图创建一个 csv 文件,如下所示:

Steve   steve@mac.com
Mark    mark223@mac.com
Jeff    jeffrey@mac.com
....

我正在使用的代码是:

import csv

with open('output.csv','w') as f:
    writer = csv.writer(f)
    writer.writerows(list1,list2)

这会生成一个将每个字符视为一个新单元格的文件。我究竟做错了什么?谢谢!

标签: pythonpython-3.xcsv

解决方案


您可以将zip这些列表放在一起,以便将每一对 (list1, list2) 视为单行:

import csv

list1 = ['Steve', 'Mark', 'Jeff']
list2 = ['steve@mac.com', 'mark223@mac.com', 'jeffrey@mac.com']

with open('output.csv','w') as f:
    writer = csv.writer(f)
    writer.writerows(zip(list1,list2))

样本输出:

$ cat output.csv 
Steve,steve@mac.com
Mark,mark223@mac.com
Jeff,jeffrey@mac.com

如果您需要将输出以空格或制表符分隔(而不是逗号),您可以将其指定为csv.writer. 例如:

import csv

list1 = ['Steve', 'Mark', 'Jeff']
list2 = ['steve@mac.com', 'mark223@mac.com', 'jeffrey@mac.com']

with open('output.csv','w') as f:
    writer = csv.writer(f, delimiter='\t')
    writer.writerows(zip(list1,list2))

产生:

$ cat output.csv 
Steve   steve@mac.com
Mark    mark223@mac.com
Jeff    jeffrey@mac.com

推荐阅读