如何在原始 excel 或 Libreoffice Calc 单元格有双行条目时编写 csv 文件?
How to write a csv file when it's original excel or Libreoffice Cal cell has double lines entries?
在 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模块读取文件。
假设我将菠萝偏好更改为 "Like"。
此后,我想将修改后的数据写出到一个新的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"]] )
在 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模块读取文件。 假设我将菠萝偏好更改为 "Like"。 此后,我想将修改后的数据写出到一个新的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"]] )