不敏感正则表达式字典串替换中的“关键错误”

问题描述 投票:-1回答:1

参考这两个链接:

我正在尝试使用此方法,以便能够使用从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”来更改我的初始字典,但无论我尝试的每种方法,每当输入为'n'时我都会遇到相同的错误t与关键字"Key Error 'keyword' doesn't match"完全匹配。

python regex dictionary case-insensitive
1个回答
0
投票

假设你的字典键只有小写单词或只有大写单词,你可以这样做:

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

我希望这能解决,你想要实现的目标,否则请提供更多背景信息。

© www.soinside.com 2019 - 2024. All rights reserved.