首页 > 解决方案 > python3:csv.writer 如何删除行尾^M?

问题描述

我意识到我的 export.csv 文件的每一行都以 ^M 结尾,知道如何删除它吗?可能我必须以某种方式修改 csv.writer 当我将此 csv 文件导入 SQL 时,我在行的末尾有一个额外的 NULL 列。:(

我使用以下代码将 csv 读取到数组中:

datafile = open('source.csv', 'r')
datareader = csv.reader(datafile, delimiter=',')
...

然后使用此代码写入另一个 csv 文件

with open('export.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerows(data2)

标签: python-3.xexport-to-csv

解决方案


您应该打开源文件,newline=''以便可以保留原始换行符结尾csv.reader以正确处理换行符:

datafile = open('source.csv', 'r', newline='')

文档摘录:

如果newline=''未指定,则嵌入在引用字段中的换行符将不会被正确解释,并且在使用\r\n linendings on write 的平台\r上将添加额外的。指定 应该始终是安全的newline='',因为csv模块自己(通用)换行处理。


推荐阅读