Я перешел с Perl на Python около года назад и не оглянулся назад. Существует только one идиома, которую я когда-либо обнаружил, что я могу сделать более легко в 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? Я видел анонимные таблицы диспетчеризации функций, но они кажутся мне громоздкими для небольшого количества регулярных выражений...