Регулярное выражение, которое я использовал:
(?:^|,)([^,]*)
(?:^|,)
Группа без захвата, которая соответствует либо началу строки, либо ,
. ([^,]*)
Группа захвата, которая соответствует 0 или более не запятым символам. Это позволяет пустые столбцы.
Я добавил несколько дополнительных тестов. Один проблемный может быть последним:
',d,e'
В обработчике регулярных выражений до Python 3.7 была ошибка в обработке совпадений нулевой длины в некоторых случаях. Вам может потребоваться установить пакет regex
в https://pypi.org/project/regex/ из репозитория PYPI
, а затем:
import regex as re
Код:
import re
lines = [
'Ten Thousand,10000',
'Ten thousand',
'helloasdf,x',
'a,b,,c,',
',d,e'
]
regex = re.compile('(?:^|,)([^,]*)')
for line in lines:
print(regex.findall(line))
Отпечатки:
['Ten Thousand', '10000']
['Ten thousand']
['helloasdf', 'x']
['a', 'b', '', 'c', '']
['', 'd', 'e']
Демонстрация запуска