当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Python的重新模块-保存状态?》经验,为你挑选了1个好方法。

我在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.

但遗憾的是,无法找到前一次调用的匹配对象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)

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

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

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

提前致谢



1> Crescent Fre..:

您可能希望这个模块实现您正在寻找的包装器.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有