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上

  • 对Python 2.7的支持结束?
  • Python - write()与writelines()和连接的string
  • 为什么Python的dict.keys()返回一个列表而不是一个集合?
  • 如何返回字典键作为Python中的列表?
  • 如何将Python 3.x和Python 2.x一起使用
  • Pythonexception链接
  • 在Windows上从Python 2.x中的命令行参数中读取Unicode字符
  • 设置文字给出了设置函数调用的不同结果
  • 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')