Предположим, у меня есть строка 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 возвращает список кортежей, если шаблон имеет более одной группы. Однако мой шаблон содержит только одну группу. Любые объяснения приветствуются.
Подробнее здесь:
https://stackoverflow.com/questions/245 ... ins-one-gr