在Windows上,Python中的CSV添加了额外的回车符

发布于 2021-02-02 23:16:52

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可能会发生此现象。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    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在该文件中观察到的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看