【问题标题】:'Key Error' in Case Insensitive Regex Dictionary String Replace不区分大小写的正则表达式字典字符串替换中的“键错误”
【发布时间】:2019-03-07 18:46:01
【问题描述】:

参考这两个链接:

我正在尝试使用此方法,以便能够使用从 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" 不完全匹配时。

【问题讨论】:

  • 请发布整个可重现的示例。

标签: python regex dictionary case-insensitive


【解决方案1】:

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

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.upperstr.lower 以防您的键是小写的,您可以匹配您的键。

输出产量:

Please enter your string: Keyword KEYWORD keyWord
replacement_keyword replacement_keyword replacement_keyword

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-05
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多