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') 
  • 如何将Unicode转换为大写打印?
  • 如何打印variables之间没有空格之间的空格
  • 在Windows上从Python 2.x中的命令行参数中读取Unicode字符
  • 对Python 2.7的支持结束?
  • 有没有描述如何__cmp__工作在Python 2中的字典对象?
  • Pythonexception链接
  • 如何使用逗号作为千位分隔符来打印数字?
  • 为什么不在lambda打印工作?
  • 如何将Python 3.x和Python 2.x一起使用
  • 我怎样才能在python的OrderedDict的顶部添加一个元素?
  • Python - write()与writelines()和连接的string