Как написать список, который содержит запятую в CSV-файл с использованием Python? - PullRequest
0 голосов
/ 12 декабря 2018

Список содержит данные ниже,

['Обама', 'Джон Барта', 'IN, 33, 33', '444', '']

Я пытаюсь записать эти данные в CSV-файл, используя следующий код,

with open(output_file, 'w') as writeFile:
    writer = csv.writer(writeFile, delimiter=',', quotechar="'", quoting=csv.QUOTE_NONE)
    writer.writerow(colValues)

Но получаю ниже вывод в CSV-файле,

"Обама", "Джон Барта", '"IN, 33, 33", "444", ""

Я не хочу заключать в одинарные кавычки' 'IN, 33, 33 "'.

Желаемый вывод:

"Обама", "Джон Барта", "IN, 33, 33", "444", ""

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Из вашего примера вывода похоже, что вы хотите заключить в кавычки все поля.Таким образом, простой способ сделать это будет с помощью:

writer = csv.writer(writeFile, delimiter=',',
               quotechar='"', quoting=csv.QUOTE_ALL)

Я также изменил quotechar на двойные кавычки, так как это также в вашем примере вывода.

0 голосов
/ 12 декабря 2018

Может быть, это слишком просто, но с настройками по умолчанию, read возвращает исходный список:

import csv

col_values = ['Obama', 'John Barta', 'IN, 33, 33', '444', '']

with open('data.csv', 'w') as writeFile:
    writer = csv.writer(writeFile)
    writer.writerow(col_values)

#=> Obama,John Barta,"IN, 33, 33",444,

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    p_list = list(reader)
print(p_list)
#=> [['Obama', 'John Barta', 'IN, 33, 33', '444', '']]
0 голосов
/ 12 декабря 2018

Если вы исключите аргумент quotechar из вызова csv.writer, он должен дать вам желаемое поведение.Например, вызов вашей функции станет

writer = csv.writer(writeFile, delimiter=',', quoting=csv.QUOTE_NONE)

Аргумент quotechar - это то, что помещается, когда присутствует delimiter или какой-либо другой специальный символ.

...