Разбить строку на запятые, но игнорировать запятые в двойных кавычках? - PullRequest
40 голосов
/ 09 ноября 2011

У меня есть некоторые данные, которые выглядят следующим образом:

A,B,C,"D12121",E,F,G,H,"I9,I8",J,K

Значения через запятую могут быть в любом порядке. Я хотел бы разбить строку на запятые; однако в случае, когда что-то находится внутри двойных кавычек, мне нужно, чтобы оно игнорировало запятые и удаляло кавычки (если это возможно). Таким образом, в основном, результатом будет следующий список строк:

['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K']

Я посмотрел на некоторые другие ответы, и я думаю, что регулярное выражение было бы лучше, но я ужасно придумываю их.

1 Ответ

58 голосов
/ 09 ноября 2011

Лассе прав;это файл значений, разделенных запятыми, поэтому вы должны использовать модуль csv .Краткий пример:

from csv import reader

# test
infile = ['A,B,C,"D12121",E,F,G,H,"I9,I8",J,K']
# real is probably like
# infile = open('filename', 'r')
# or use 'with open(...) as infile:' and indent the rest

for line in reader(infile):
    print line
# for the test input, prints
# ['A', 'B', 'C', 'D12121', 'E', 'F', 'G', 'H', 'I9,I8', 'J', 'K']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...