当使用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
答案 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)