5

我正在尝试将几个元组写入 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()

这有效,但不如预期。注意电子表格中的空白行:

显示不需要的空行的电子表格行的屏幕截图

在文本编辑器中,文件如下所示:

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

(共 4 行)

没有这些空白行我怎么写?

4

1 回答 1

9

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 上以文本模式打开输出文件,或newline=''在 Python 3 上“在有影响的平台上”(Windows)以文本模式打开输出文件,\n将输出流中的所有内容转换\r\n\r\r\n. 这会导致您额外的空白行。

于 2013-08-20T07:30:43.483 回答