大约一年前我从Perl切换到Python,并没有回头.我发现只有一个习惯用法在Perl中比在Python中更容易做到:
if ($var =~ /foo(.+)/) {
# do something with $1
} elsif ($var =~ /bar(.+)/) {
# do something with $1
} elsif ($var =~ /baz(.+)/) {
# do something with $1
}
Run Code Online (Sandbox Code Playgroud)
相应的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)
Run Code Online (Sandbox Code Playgroud)
有没有人有一种优雅的方式在Python中重现这种模式?我已经看过使用匿名函数调度表,但对于少数正则表达式来说,这些对我来说似乎有点笨拙......
我想通过将其与正则表达式序列进行匹配来处理字符串.因为我试图避免嵌套if-then,我正在考虑切换案例.如何在Python中编写以下结构?谢谢
switch str:
case match(regex1):
# do something
case match(regex2):
# do sth else
Run Code Online (Sandbox Code Playgroud)
我知道Perl允许一个人这样做.是Python吗?