csv模块自动写入不需要的回车

时间:2017-04-23 20:59:02

标签: python excel list csv row

当使用pythons csv模块创建一个csv时,如果字符串里面有一个逗号,它会自动将回车字符放在字符串的末尾,例如:

['this one will have a carriage return, at the end','this one wont']
在Excel工作表中,这将结果如下:

 |       |this on|

由于额外的回车符,它也会用双引号内的逗号包围字符串,如预期的那样。

我使用的代码是:

with open(oldfile, 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    for row in data:
        writer.writerow(row)

如何使用相同的数据格式创建csv,如果字符串中包含逗号,则不会有回车符,我不介意字符串被双引号括起来

这是输出.csv:

的诊断问题的链接

Excel showing empty cells when importing file created with csv module

这是公认的答案。

我已将代码更改为:

with open(oldfile, 'w', newline='', quoting=csv.QUOTE_MINIMAL) as csvfile:
    writer = csv.writer(csvfile)
    for row in data:
        writer.writerow(row)

我现在收到错误:

TypeError: 'quoting' is an invalid keyword argument for this function

1 个答案:

答案 0 :(得分:1)

python的内置CSV模块具有选项:csv.QUOTE_MINIMAL。将此选项作为参数添加到writer时,它会在分隔符位于给定字符串中时添加引号:"your text, with comma", "other field"。这将消除回车的需要。 代码是:

with open(oldfile, 'w') as csvfile: writer = csv.writer(csvfile, quoting=csv.QUOTE_MINIMAL) for row in data: writer.writerow(row)