Как записать CSV-файл, если в его исходной таблице Excel или Libreoffice Cal есть двойные строки? - PullRequest
0 голосов
/ 24 апреля 2020

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

Какую команду использовать?

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Как уже упоминалось @Danny_ds, мне нужно было использовать python3 csv writer. Также мне нужно было задать ключевое слово писателя 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"]] )
0 голосов
/ 24 апреля 2020

Вы можете встроить многострочные поля в кавычки следующим образом:

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

Если поля уже содержат кавычки, их следует экранировать другой кавычкой:

"Monitor 24""
Samsung",...

Или если вы экспортируете в программном обеспечении найдите параметр, заключающий эти поля в кавычки.

...