我有一个文本文件,里面有一个真正的英语俚语及其替代词的列表。我用“:”作为拆分点,将此文本文件转换为字典,在转换后打印词典时,一切似乎都正常。在
但是,来自这一行的错误:slangs_re = re.compile('|'.join(slang_dict.keys()))
表示nothing to repeat at position 112207
。在
在尝试调试时,我发现错误与字典有某种联系。这是因为当我运行下面的代码时,我没有得到正确的输出,但是我也没有得到错误。此代码的预期输出为“fitness”,但实际输出为“fitess”。在
import re
test = "fitess"
slang_dict = {"fitess":"fitness", "damm":"damn"}
slangs_re = re.compile('|'.join(slang_dict.keys()))
def correct_slang(s, slang_dict=slang_dict):
def replace(match):
return slang_dict[match.group(0)]
return slangs_re.sub(replace, s)
test = correct_slang(test)
print(test)
这是字典中的代码(抱歉,文本文件太大,无法包含在内。示例可用here)。预期输出为“适合度”,但实际输出为错误:
^{pr2}$在阅读了其他的SO线程后,我发现在某些情况下这是一个bug,但在本例中似乎不是。在
谢谢你
我建议更换
与
^{pr2}$并确保按长度按降序排列的键传递。在
参见Python demo
这将检查单词作为整个单词,并将转义每个搜索短语中的特殊字符,以便在将它们传递给正则表达式引擎时不会出现任何问题。在
如果您对整词匹配不感兴趣,请删除}(检查尾随词边界)。在
(?<!\w)
(检查前导词边界)和{相关问题 更多 >
编程相关推荐