Чтение файла CSV с запятой в полях в Python
Мне нужно прочитать CSV файл, у которого есть поля с запятой, поэтому я дважды цитировал поля, содержащие запятые, например:
1, "text1,text2", "text3, text4", a, b, c
Но когда я пытаюсь прочитать файл в Python, я получаю поля, разделенные запятыми, как показано ниже:
row[0] = 1
row[1] = text1
row[2] = text2
row[3] = text3
row[4] = text4
row[5] = a
row[6] = b
row[7] = c
Я читаю CSV файл со следующим кодом:
info = csv.reader(open('./info.csv'))
for row in info :
print row[0] + " * " + row[1] ...
Можно ли читать двойные кавычки, содержащие запятую?
Ответы
Ответ 1
Модуль Python csv
фактически поддерживает цитируемые поля, даже по умолчанию. Ваша проблема здесь в том, что Python по умолчанию не пропускает пробел, поэтому вам нужно использовать skipinitialspace=True
.
>>> s = StringIO.StringIO('1, "text1,text2", "text3, text4", a, b, c')
>>> list(csv.reader(s, skipinitialspace=True))
[['1', 'text1,text2', 'text3, text4', 'a', 'b', 'c']]