Скажем, у меня есть строка s
, содержащая буквы и два разделителя 1
и 2
. Я хочу разделить строку следующим образом:
- если подстрока
t
находится между1
и2
, вернутьt
- в противном случае вернуть каждый символ
Итак, если s = 'ab1cd2efg1hij2k'
, ожидаемый результат равен ['a', 'b', 'cd', 'e', 'f', 'g', 'hij', 'k']
.
Я пытался использовать регулярные выражения:
import re
s = 'ab1cd2efg1hij2k'
re.findall( r'(1([a-z]+)2|[a-z])', s )
[('a', ''),
('b', ''),
('1cd2', 'cd'),
('e', ''),
('f', ''),
('g', ''),
('1hij2', 'hij'),
('k', '')]
Оттуда я могу сделать [ x[x[-1]!=''] for x in re.findall( r'(1([a-z]+)2|[a-z])', s ) ]
, чтобы получить свой ответ, но я все еще не понимаю вывод. В документации говорится, что findall
возвращает список кортежей, если шаблон имеет более одного группа. Однако мой шаблон содержит только одну группу. Любое объяснение приветствуется.