re.findall
возвращается по-разному в зависимости от количества захвата группы в схеме:
>>> re.findall(r"(?P<pair>.*)_135624\.jpg", "09_135624.jpg")
['09']
Согласно документации:
возвращенной все неперекрывающиеся матчи рисунка в string, в виде списка строк . Строка сканируется слева направо, и в ней возвращаются . Если одна или несколько групп присутствуют в шаблоне, возвращает список групп; это будет список кортежей, если шаблон имеет несколько групп. Пустые совпадения включены в результат , если они не касаются начала другого матча.
Альтернатива использованием re.search
:
>>> re.search(r"(?P<pair>.*)_135624\.jpg", "09_135624.jpg")
<_sre.SRE_Match object at 0x00000000025D0D50>
>>> re.search(r"(?P<pair>.*)_135624\.jpg", "09_135624.jpg").group('pair')
'09'
>>> re.search(r"(?P<pair>.*)_135624\.jpg", "09_135624.jpg").group(1)
'09'
UPDATE
Чтобы соответствовать .
буквально, что вам нужно, чтобы избежать его: \.
.
Спасибо. Мой шаблон теперь «(? P ([0-9] [0-9])):? (. *). Jpg", и я использовал re.search для принятия необходимой группы. Vks помог мне с демо, вы помогли с ответом о re.search, поэтому я не знаю, какой ответ я могу принять ... –
@ValeriyG, вы можете использовать '\ d' вместо' [0-9] '. – falsetru
@ValeriyG 'r '(? P \ d {2}) _ \ d {6} \. Jpg'' –
Unihedron