'Key Error' 在不区分大小写的正则表达式字典中替换字符串
'Key Error' in Case Insensitive Regex Dictionary String Replace
参考这两个链接:
- Case insensitive dictionary,
我正在尝试使用此方法,以便能够使用从 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
方法,以及使用 "Case Insensitive Dictionary Method" 来更改我的初始字典,但无论我尝试哪种方法,我都会得到只要输入与关键字 "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
我希望这能解决你想要实现的目标,否则请提供更多上下文。
参考这两个链接:
- Case insensitive dictionary,
我正在尝试使用此方法,以便能够使用从 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
方法,以及使用 "Case Insensitive Dictionary Method" 来更改我的初始字典,但无论我尝试哪种方法,我都会得到只要输入与关键字 "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
我希望这能解决你想要实现的目标,否则请提供更多上下文。