Python 2 CSV编写器在Windows上产生错误的行结束符

根据其文档, csv.writer默认使用“\ r \ n”作为行列式。

import csv with open("test.csv", "w") as f: writer = csv.writer(f) rows = [(0,1,2,3,4), (-0,-1,-2,-3,-4), ("a","b","c","d","e"), ("A","B","C","D","E")] print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n") writer.writerows(rows) print writer.dialect.lineterminator.replace("\r", "\\r").replace("\n", "\\n") 

这打印

 \r\n \r\n 

如预期。 但是,创build的csv文件使用了终结符'\ r \ r \ n'

 0,1,2,3,4 0,-1,-2,-3,-4 a,b,c,d,e A,B,C,D,E 

这是一个错误,或者在我的csv.writer的使用有什么问题吗?

Python版本:

基于Python 2.6.2的ActivePython 2.6.2.2(ActiveState Software Inc.)(r262:71600,2009年4月21日,15:05:37)[win32上的MSC v.1500 32位(Intel)]

在Windows Vista上

3 Solutions collect form web for “Python 2 CSV编写器在Windows上产生错误的行结束符”

在Python 2.x中,如文档所述,始终以二进制模式打开文件。 csv按照您的预期写入\r\n ,但是接下来的Windows文本文件机制切入并将\n更改为\r\n …总效果: \r\r\n

csv.writer文档:

如果csvfile是一个文件对象,那么必须在平台上用'b'标志打开,这是有所作为的

实际上说出主要罪魁祸首的名字似乎有些沉默:-)

在Python 2.7 csv编写器中使用改变行结束符

writer = csv.writer(f, delimiter = '|', lineterminator='\n')

这是从\ r \ n更改默认分隔符的简单方法。

不幸的是,它与Python 3的csv模块有点不同,但是这个代码可以同时用于Python 2和Python 3:

 if sys.version_info >= (3,0,0): f = open(filename, 'w', newline='') else: f = open(filename, 'wb') 
  • 打印没有换行(打印'a')打印空间,如何删除?
  • 覆盖自定义类的bool()
  • 在ConfigParser中保存大小写?
  • 对Python 2.7的支持结束?
  • 如何检查variables是否与Python 2和3兼容的string
  • 奇怪的行为与浮动和string转换
  • 如何在Python交互模式下撤销True = False?
  • 确定2个列表是否具有相同的元素,而不pipe顺序如何?
  • Python,可变长度位置参数之后的默认关键字参数
  • 我如何连接str和int对象?
  • Python如何比较string和int?