【发布时间】:2016-01-08 21:27:52
【问题描述】:
我正在使用 dict 文件和正则表达式来更改脚本中的一些单词,但现在遇到了这个错误
在插件
超出正则表达式代码大小限制
我的 dict 有大约 5300 个条目,设置为:
'SE': 'South East',
'NE': 'North East',
您会想到将缩写词更改为完整单词。平均有 6 - 8 个缩写被更改。
为此我正在使用
from abbreviations import abbreviations #mydict
pattern = re.compile(r'\b(' + '|'.join(abbreviations.keys()) + r')\b')
msg = pattern.sub(lambda x: abbreviations[x.group()], msg)
但我还为其他任务使用了另外 4 个正则表达式,例如从多个字符串中删除单词和数字。
我得到错误的原因是什么?如果我删除了我的 dict,如果我有 300 个条目,它就可以工作。
从谷歌调查,大多数人说字典大小没有限制。
【问题讨论】:
-
我尝试使用 99,000 个元素的字典(基于英文单词列表)重现您的错误,但代码运行良好。一个更完整的例子会有所帮助,但鉴于字典有 5000 个条目,这很棘手。
-
如果我没记错的话,限制是正则表达式的长度。只需以较小的块浏览字典并为它们中的每一个进行替换。
-
长度是什么意思?就像一行代码一样?
-
@Roy Yorke 如果需要,可以从 git hub 下载字典
-
我不太确定,但我认为正则表达式只是有大小限制。
标签: python regex dictionary