Почему re.findall возвращает список кортежей, если мой шаблон содержит только одну группу?Python

Программы на Python
Ответить
Anonymous
 Почему re.findall возвращает список кортежей, если мой шаблон содержит только одну группу?

Сообщение Anonymous »

Предположим, у меня есть строка 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»