import csv
with open('test.csv', 'w') as outfile:
writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['hi', 'dude'])
writer.writerow(['hi2', 'dude2'])
上面的代码生成一个文件,test.csv
,还有一个额外的\r
在每一行,像这样:
hi,dude\r\r\nhi2,dude2\r\r\n
而不是预期的
hi,dude\r\nhi2,dude2\r\n
为什么会发生这种情况,或者这实际上是期望的行为?
Python 3:
官方csv文档推荐open
荷兰国际集团的文件newline=''
在所有平台上禁用通用换行符翻译:
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
...
CSV 编写器以以下方式终止每一行lineterminator方言的,即'\r\n'
对于默认的excel
所有平台上的方言,因为这就是RFC 4180推荐。
Python 2:
在 Windows 上,始终以二进制模式打开文件("rb"
or "wb"
),然后将它们传递给csv.reader
or csv.writer
.
虽然该文件是文本文件,但 CSV 被视为binary所涉及的库的格式,与\r\n
分隔记录。如果该分隔符是以文本模式编写的,Python 运行时将替换\n
with \r\n
,因此\r\r\n
文件中观察到。
See 之前的这个答案.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)