'Key Error'大小写不区分的正则表达式字典字符串替换



参考这两个链接:

  • 案例不敏感的词典,
  • 使用字典替换字符串-Regex

我正在尝试使用此方法,以便使用CSV创建的字典从用户输入的字符串中替换,但具有不敏感性。

所讨论的解决方案如下:

string=input("Please enter your string")
pattern = re.compile(r'(?<!w)(' + '|'.join(re.escape(key) for key in sorted(dict.keys(),key=len, reverse=True)) + r')(?!w)')
result = pattern.sub(lambda x: dict[x.group()], string)
print(result)

现在,我已经尝试在编译末尾使用RE.IGNORECASE方法,并使用"案例不敏感的词典方法"来更改我的初始字典,但是无论我尝试如何,我都会在输入不是关键字"Key Error 'keyword' doesn't match"的确切匹配。

假设您的字典键只有较低的案例单词或大写字,您可以做这样的事情:

import re
dict = {'KEYWORD': "replacement_keyword", 'EXAMPLE': 'b', 'EXAMPLE2: 2': 'c'}
string=input("Please enter your string")
pattern = re.compile(r'(?<!w)(' + '|'.join(re.escape(key) for key in sorted(dict.keys(), key=len, reverse=True)) + r')(?!w)', re.IGNORECASE)
result = pattern.sub(lambda x: dict[str.upper(x.group())], string)
print(result)

使用 str.upper str.lower 如果您的键较低的情况,则匹配键。

产量产生:

Please enter your string: Keyword KEYWORD keyWord
replacement_keyword replacement_keyword replacement_keyword

我希望这能解决,您想实现的目标,否则请提供更多的上下文。

最新更新