[当原始Excel或Libreoffice Cal单元中有双行条目时如何编写csv文件?

问题描述 投票:0回答:2

在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' )

使用正确的命令是什么?

python-3.x excel csv libreoffice-calc
2个回答
0
投票

您可以将多行字段嵌入到这样的引号中:

"apple
orange",Like
pineapple,Dislike
"kiwi
banana",Like

[当字段中已经包含引号时,那些引号应换成另一个引号:

"Monitor 24""
Samsung",...

或者,如果要从软件中导出,请寻找参数以将这些字段括在引号中。


0
投票

如@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"]] )
© www.soinside.com 2019 - 2024. All rights reserved.