在excel或libreoffice cal中,一个单元格可以有多个行条目。
Row Fruit Like/Dislike
--- ---------- ------------
1 apple Like
orange
2 pineapple Dislike
3 kiwi Like
banana
4 starfruit Dislike
我首先将电子表格另存为“ test.csv”文件。
[接下来,我使用Python3的csv模块读取文件。假设我将菠萝的偏好设置更改为“喜欢”。此后,我想将修改后的数据写到新的csv文件中。
如何在没有以下问题的情况下将数据写入新的csv?
Row Fruit Like/Dislike
--- ---------- ------------
1 apple Like
2 orange
3 pineapple Like
4 kiwi Like
5 banana
6 starfruit Dislike
期望的结果:
Row Fruit Like/Dislike
--- ---------- ------------
1 apple Like
orange
2 pineapple Like
3 kiwi Like
banana
4 starfruit Dislike
我使用的命令是:
with open("out.csv", "w", newline='\n', encoding='utf_8' ) as out:
for v in data.values():
out.write( f'{v.number},{v.results["Fruit"]},{v.results["Choice"]}\n' )
使用正确的命令是什么?
您可以将多行字段嵌入到这样的引号中:
"apple
orange",Like
pineapple,Dislike
"kiwi
banana",Like
[当字段中已经包含引号时,那些引号应换成另一个引号:
"Monitor 24""
Samsung",...
或者,如果要从软件中导出,请寻找参数以将这些字段括在引号中。
如@Danny_ds所述,我需要使用python3的csv编写器。另外,我需要设置作者的关键字dialect='excel'
。那解决了我的问题。所以我的命令终于看起来像这样:
with open( "out.csv", 'w', newline='', encoding='utf-8' ) as csvfile:
csvwriter = csv.writer( csvfile, dialect='excel' ) #Use csv writer with excel dialect.
for v in data.values():
csvwriter.write( [v.number,v.results["Fruit"],v.results["Choice"]] )