如何在Python中将元组写入CSV文件并避免空行。

6
我将尝试把几个元组写入一个csv文件。
这是我的尝试:
import csv
out_file = open('csv_write.csv', 'w')
writer = csv.writer(out_file)
writer.writerow((0, 1, 2))
writer.writerow((3, 4, 5))
out_file.close()

这个方法是可行的,但达不到预期的效果。请注意电子表格中的空行:

screenshot of spreadsheet rows showing unwanted blank lines

而且在文本编辑器中,文件看起来像这样:

0,1,2
<空行>
3,4,5
<空行>

(总共4行)

如何避免这些空白行?


你的代码对我来说完全正常工作了?你的示例中是否还有其他未显示的内容? - Viktor Kerkez
不使用csv,将“w”更改为“a”。然后,out_file.write(“0,1,2 \n”)等。 - Jean
@ViktorKerkez 不,这正是我所做的。 - hola
1个回答

10

csv模块会自行处理行尾,并要求以特定方式打开输出文件:

out_file = open('csv_write.csv', 'wb')             # Python 2.x
out_file = open('csv_write.csv', 'w', newline='')  # Python 3.x

参考http://docs.python.org/2.7/library/csv.html?highlight=csv#csv.writer:

...在那些有所改变的平台上,必须以“b”标记打开。

以及http://docs.python.org/3.3/library/csv.html?highlight=csv#csv.writer:

...应该使用newline=''打开...

您的空行是由于csv模块的默认“方言”是excel。该方言定义了lineterminator='\r\n',并直接写入流中。在Python 2上以文本模式打开输出文件或在Python 3上没有使用newline=''“在那些有所改变的平台上”(Windows),将所有\n转换为\r\n,导致\r\r\n。这导致额外的空行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接