相关疑难解决方法(0)

Python的重新模块 - 保存状态?

我在Python中发现的最大烦恼之一是re模块无法在匹配对象中明确地保存其状态而无法保存其状态.通常,需要解析行,如果它们符合某个正则表达式,则从相同的正则表达式中取出它们的值.我想写这样的代码:

if re.match('foo (\w+) bar (\d+)', line):
  # do stuff with .group(1) and .group(2)
elif re.match('baz whoo_(\d+)', line):
  # do stuff with .group(1)
# etc.
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,无法找到前一次调用的匹配对象re.match,所以这样写的如下:

m = re.match('foo (\w+) bar (\d+)', line)
if m:
  # do stuff with m.group(1) and m.group(2)
else:
  m = re.match('baz whoo_(\d+)', line)
  if m:
    # do stuff with m.group(1)
Run Code Online (Sandbox Code Playgroud)

随着elifs 的列表变长,这样不太方便并且变得非常笨拙.

一个hackish解决方案是将re.match和re.search包装在我自己的对象中,以保持状态.有没有人用过这个?您是否了解半标准实现(在大型框架或其他内容中)?

您还可以推荐哪些其他解决方法?或许,我只是在滥用模块,能够以更清洁的方式满足我的需求吗?

提前致谢

python regex

12
推荐指数
2
解决办法
1242
查看次数

标签 统计

python ×1

regex ×1