在Windows上,Python中的CSV添加了额外的回车符
import csv
outfile = file('test.csv', 'w')
writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['hi','dude'])
writer.writerow(['hi2','dude2'])
outfile.close()
它会生成文件,每行test.csv
都有一个额外的文件\r
,如下所示:
test.csv
hi,dude\r\r\nhi2,dude2\r\r\n
而不是预期的:
hi,dude\r\nhi2,dude2\r\n
为什么会发生这种情况,或者这实际上是预期的行为?
注意:
- Python 2或3可能会发生此现象。
-
Python 3:
如YiboYang所述,
newline=''
with open('output.csv', 'w', newline='') as f: writer = csv.writer(f) ...
如CoDEmanX的评论所述,
setnewline='\n'
with open('output.csv', 'w', newline='\n', encoding='utf-8') as f: writer = csv.writer(f) ...
Python 2:
在Windows上,在将文件传递到或之前,始终以二进制模式(
"rb"
或"wb"
)打开文件。csv.readercsv.writer
尽管该文件是文本文件,但是所涉及的库将CSV视为二进制格式,并带有
\r\n
单独的记录。如果隔板是写在文本模式中,Python运行时替换\n
使用\r\n
,因此\r\r\n
在该文件中观察到的。