相关疑难解决方法(0)

你如何将这个正则表达式的习惯用法从Perl翻译成Python?

大约一年前我从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中重现这种模式?我已经看过使用匿名函数调度表,但对于少数正则表达式来说,这些对我来说似乎有点笨拙......

python regex perl

45
推荐指数
6
解决办法
8779
查看次数

如何在Python中组合switch-case和regex

我想通过将其与正则表达式序列进行匹配来处理字符串.因为我试图避免嵌套if-then,我正在考虑切换案例.如何在Python中编写以下结构?谢谢

switch str:
   case match(regex1):
       # do something
   case match(regex2):
       # do sth else
Run Code Online (Sandbox Code Playgroud)

我知道Perl允许一个人这样做.是Python吗?

python switch-statement

5
推荐指数
2
解决办法
6414
查看次数

标签 统计

python ×2

perl ×1

regex ×1

switch-statement ×1