Преобразовать строку, разделенную запятыми, в список, но игнорировать запятую в кавычках

Как преобразовать "1,,2'3,4'"в список? Запятые разделяют отдельные элементы, если только они не заключены в кавычки. В этом случае запятая должна быть поставлена ​​в элементе.

Это желаемый результат:['1', '', '2', '3,4']. Одно регулярное выражение, которое я нашел в другом потоке для игнорирования кавычек, выглядит следующим образом:

re.compile(r'''((?:[^,"']|"[^"]*"|'[^']*')+)''')

Но это дает мне этот вывод:

['', '1', ',,', "2'3,4'", '']

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

Я сам пытался сделать это регулярное выражение:

re.compile(r'''(, | "[^"]*" | '[^']*')''')

который ничего не обнаружил и просто вернул мой первоначальный список.

Я не понимаю, почему, разве он не должен обнаруживать хотя бы запятые? Та же проблема возникает, если я добавляю ?после запятой.

5
задан phant0m 4 August 2012 в 09:50
поделиться