2016-05-30 3 views
0

У меня есть строка, которую я хочу преобразовать в список, где каждый элемент делится запятыми.Как принять двойное quouted значение из строки

Например 'test1,"test2,test3",test4' станет ['test1', 'test2 test3', 'test4']

Обратите внимание, что я не хочу, чтобы разделить test2 и test3

+0

пост ур попытки .. –

+0

@Selcuk на самом деле не –

+0

@AnttiHaapala Как насчет [Как разбить, но игнорировать разделители в кавычках, в питоне?] (HTTP: // StackOverflow .com/q/2785755) –

ответ

1

То, что вы есть строка из файла CSV. Используйте csv.reader.

>>> import csv 
>>> lines = ['test1,"test2,test3",test4', 'testa,"testb,testc",testd'] 
>>> r = csv.reader(lines) 
>>> list(r) 
[['test1', 'test2,test3', 'test4'], ['testa', 'testb,testc', 'testd']] 
+0

Я хотел бы знать, что не так или бесполезно в отношении моего ответа, чтобы он заслуживал нисходящего потока, чтобы я мог его улучшить. – TigerhawkT3

0

Вы можете split() это по " во-первых, заменить запятые пробелами, strip() конечные пробельные символы и удалить пустые элементы (когда двойные кавычки в конце). Для этого потребуется довольно много итераций. Посмотрите на ответ @ TigerhawkT3.

def split_string(s): 
    ret = s.split('"') 
    ret = [ " ".join(x.split(",")) for x in ret ] 
    ret = [x.strip() for x in ret] 
    ret = [ x for x in ret if x != ""] 

    return ret 
2

Как ответ на TigerhawkT3, я использую csv.reader тоже, но с более 2-х параметров.

import csv 

src_text = 'test1,"test2,test3",test4' 
r = csv.reader([src_text], delimiter= ',', quotechar='"') 
converted_list = next(r) 

Выходные

>>> print converted_list 
['test1', 'test2,test3', 'test4'] 
Смежные вопросы