При использовании .writerow () указывать массив как одну ячейку - PullRequest
0 голосов
/ 22 ноября 2018

Запись в CSV:

import csv
with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam', 'WOW', '['HMM', 'WOW']', 'BYE'])
    spamwriter.writerow(['Cool', 'Nice'])

Выход Excel неожиданно:

Ожидаемый выход Excel: enter image description here

Как бы я держал ['HMM', 'WOW'] все в ячейке C?

1 Ответ

0 голосов
/ 22 ноября 2018

Проблема в том, что вы используете разделитель ,, но также пытаетесь поместить это , в ячейку.Это не сработает.Вы можете попробовать использовать:

with open('eggs.csv', 'w', newline='') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=';',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)

, а затем изменить региональные настройки ОС, чтобы приложение Office распознало ; в качестве разделителя в электронных таблицах.В противном случае вам придется избавиться от , в ячейке

Кроме того, по крайней мере для меня, это выдает ошибку, потому что вы не экранировали символ ' правильно при определении списка.Мне пришлось изменить его на:

spamwriter.writerow(['Spam', 'WOW', "['HMM', 'WOW']", 'BYE'])

Результат использования ; в качестве разделителя:

enter image description here

...