我想用Python字典替换文档中的单词,并且想实现不区分大小写的替换。 就像我们有一个字符串一样:
string = 'spam fOo bar foo bar spam fOO'
和字典:
substitutions = {"foo": "TEST", "bar": "BAR"}
结果我想得到:
'spam TEST bar TEST bar spam TEST'
即所有“ foo”单词都会被替换,无论使用大写还是小写字母。
为此,我找到了下一个功能:
def replace(string, substitutions):
regex = re.compile('|'.join(map(re.escape, substitutions)))
return regex.sub(lambda match: substitutions[match.group(0)], string)
它返回我:
'TEST spam fOo BAR TEST BAR spam fOO'
即只有完全匹配被替换。如果我将re.IGNORECASE用作re.compile()的标志,则没有任何变化。
答案 0 :(得分:0)
添加re.IGNORECASE并尝试
... substitutions[match.group().lower()] ...
因为当匹配被说成“ fOo”时,替代项[match.group()]找不到相关的值