Как перевести эту идиому регулярных выражений из Perl в Python?Python

Программы на Python
Anonymous
Как перевести эту идиому регулярных выражений из Perl в Python?

Сообщение Anonymous »

Есть одна идиома, которую мне легче реализовать в Perl, чем в Python:

Код: Выделить всё

if ($var =~ /foo(.+)/) {
# do something with $1
} elsif ($var =~ /bar(.+)/) {
# do something with $1
} elsif ($var =~ /baz(.+)/) {
# do something with $1
}
Соответствующий код Python не так элегантен, поскольку операторы if продолжают вкладываться:

Код: Выделить всё

m = re.search(r'foo(.+)', var)
if m:
# do something with m.group(1)
else:
m = re.search(r'bar(.+)', var)
if m:
# do something with m.group(1)
else:
m = re.search(r'baz(.+)', var)
if m:
# do something with m.group(2)
Есть ли у кого-нибудь элегантный способ воспроизвести этот шаблон в Python? Я видел использование таблиц диспетчеризации анонимных функций, но они кажутся мне громоздкими для небольшого количества регулярных выражений...

Подробнее здесь: https://stackoverflow.com/questions/122 ... nto-python

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