使用Python列表创建.csv文件

256 投票
13 回答
905451 浏览
提问于 2025-04-15 18:08

我想用Python列表里的值创建一个.csv文件。当我打印列表里的值时,它们都是unicode格式的,看起来像这样:

[u'value 1', u'value 2', ...]

如果我遍历列表里的值,比如用for v in mylist: print v,它们就会显示成普通文本。

我还可以用,把每个值之间隔开,像这样print ','.join(mylist)

而且我可以把这些输出到一个文件里,比如:

myfile = open(...)
print >>myfile, ','.join(mylist)

但我想把它输出成CSV格式,并且希望在列表里的值周围加上分隔符,比如:

"value 1", "value 2", ... 

我找不到简单的方法来在格式中加入这些分隔符,我试过用join语句。请问我该怎么做呢?

13 个回答

72

还有一种方法,你可以使用DataFrame,这是pandas库里的一个功能。它可以很简单地把数据保存成csv格式,就像下面的代码所示:

import pandas
df = pandas.DataFrame(data={"col1": list_1, "col2": list_2})
df.to_csv("./file.csv", sep=',',index=False)
125

这是Alex Martelli的一个安全版本:

import csv

with open('filename', 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(mylist)
317
import csv

with open(..., 'wb') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(mylist)
with open(..., 'w', newline='') as myfile:
     wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
     wr.writerow(mylist)

补充说明:这个方法只适用于 Python 2.x 版本。

如果你想在 Python 3.x 版本中使用这个方法,需要把 wb 替换成 w可以参考这个 Stack Overflow 的回答

撰写回答