У меня есть этот код, чтобы разбить сложный CSV-файл на куски. Жесткий бит заключается в том, что запятые могут также отображаться внутри «", и поэтому их нельзя разделить. Регулярное выражение, я использую, чтобы найти запятые не внутри "" работает отлично: comma_re = re.compile(r',(?=([^"]*""[^"]*"")*[^"]*$)')
Регулярное выражение "rest of string" split split
Демо: here
import re
test = 'Test1,Test2,"",Test3,Test4"",Test5'
comma_re = re.compile(r',(?=([^"]*""[^"]*"")*[^"]*$)')
print comma_re.split(test)
Выход:
['Test1', 'Test2,"",Test3,Test4""', 'Test2', '"",Test3,Test4""', '"",Test3,Test4""', None, 'Test5']
Желаемая: ['Test1', 'Test2', '"",Test3,Test4""', 'Test5']
Как может Я избегаю бесполезных результатов раскола?
Заранее благодарен!
UPDATE: Глупо, что я даже не знал о модуле csv по умолчанию, продолжал использовать это. Спасибо за ваши усилия!
Пробовал модуль CSV еще? –
Нет, еще нет, единственная сложная часть - расщепление, остальное мне нужно сделать очень просто ... – pietv8x
Разбор csv-файла с регулярным выражением - такая плохая идея. Просто используйте построенный для этого модуль csv – Keatinge