覆盖Python库文件以规避规模限制

时间:2015-06-03 06:18:02

标签: python

我在Python的正则表达式中遇到了一个名为捕获组的100个命名捕获组限制。

硬编码限制在sre_compile.py中:

if p.pattern.groups > 100:
    raise AssertionError(
        "sorry, but this version only supports 100 named groups"
        )

我的理解是,这种限制是出于性能原因而不一定是因为空间限制。就我而言,性能问题不如此功能重要。所以我想知道是否有合理的方法来解决这个限制?可能通过注入替换sre_compile.py文件并删除了大小检查?当然,这听起来很危险,我理解不推荐这样的行动。但是,在短期内我需要规避这个限制,从长远来看,我有一个很好的工作。有关最佳解决方案的任何建议吗?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

无需弄乱python的库,只需替换代码中的函数即可:

import sre_compile

def my_compile(p, flags=0):
    ...

sre_compile.compile = my_compile

答案 1 :(得分:0)

尝试在https://pypi.python.org/pypi/pycparser/2.14下载pycparse-2.14.tar.gz 并运行以下命令

tar zxf pycparser-2.14.tar.gz
cd pycparser-2.14
python setup.py  install