2012-01-28 2 views
2

два примера, как re.split() работает:Как сгруппировать регулярное выражение в функции re.split()?

>>> re.split(',', 'a,b') 
['a', 'b'] 

но

>>> re.split('(,)', 'a,b') 
['a', ',', 'b'] 

Почему я получаю '' в списке? Как этого избежать?

Я спрашиваю, потому что я хотел бы сделать раскол, используя выражение, подобное «xy (a | b) cd».

ответ

9

использовать не захватывая группы, как:

re.split('(?:,)', 'a,b') 
+0

Спасибо. Он работает (Athrough все еще я не понимаю, почему нормальная скобка привела к «,» в списке). – cauchy

+2

@cauchy, так как группы захвата (скобки) захватывают свой контент (который включается в результаты разделения как элемент для каждой группы захвата и разбитого соответствия, по определению). – Qtax

1

Он работает таким образом, потому что это documented to work that way:

Если захватывая круглые скобки используются в шаблон, то текст всех групп в шаблон также возвращается как часть результирующего списка.

Смежные вопросы