如何在Python中将列表数据写入CSV文件的列和行中?
我有一个列表,里面又包含了很多小列表,我想把它们写进一个csv文件里,形成行和列的格式。我试过用writerows
,但是效果不是我想要的。我的列表示例如下:
[[1, 2], [2, 3], [4, 5]]
用这个方法:
example = csv.writer(open('test.csv', 'wb'), delimiter=' ')
example.writerows([[1, 2], [2, 3], [4, 5]])
我得到的结果是1 2
在一个单元格里,2 3
在另一个单元格里,等等。这样并不是我想要的效果,我希望1
在一个单元格里,2
在下一个单元格里。
我需要把这个示例列表写入一个文件,这样当我用Excel打开时,每个元素都能在自己的单元格里。
我的输出应该是这样的:
1 2
2 3
4 5
每个元素都在不同的单元格里。
5 个回答
3
如果你在写一个CSV文件,那为什么要用空格作为分隔符呢?CSV文件通常使用逗号或者分号(在Excel中)来分隔单元格,所以如果你用delimiter=' '
,其实你并没有真正生成一个CSV文件。你应该直接使用csv.writer
的默认分隔符和方言。如果你想以后在Excel中读取这个CSV文件,可以明确指定Excel的方言,这样可以让你的意图更清楚(虽然这个方言本来就是默认的):
example = csv.writer(open("test.csv", "wb"), dialect="excel")
12
>>> import csv
>>> with open('test.csv', 'wb') as f:
... wtr = csv.writer(f, delimiter= ' ')
... wtr.writerows( [[1, 2], [2, 3], [4, 5]])
...
>>> with open('test.csv', 'r') as f:
... for line in f:
... print line,
...
1 2 <<=== Exactly what you said that you wanted.
2 3
4 5
>>>
为了让Excel能够正确打开这个文件,你需要使用逗号(这是csv文件的默认分隔符)作为分隔符,除非你所在的地区(比如欧洲)需要用分号。
16
提供的例子使用了 csv
模块,非常不错!另外,你也可以简单地使用格式化字符串来写入文本文件,像下面这个示例:
l = [[1, 2], [2, 3], [4, 5]]
out = open('out.csv', 'w')
for row in l:
for column in row:
out.write('%d;' % column)
out.write('\n')
out.close()
我用了 ;
作为分隔符,因为它在 Excel 中效果最好(这是你的一个要求)。
希望这对你有帮助!