Python Regex Sub: Using Dictionary with Regex Expressions
我正在使用包含正则表达式的字典来替换不同字符串的部分,正如@roippi 在之前的 SO 问题中优雅地描述的那样。第一个 're.sub' 表达式完美运行。但是,只要我的代码实际上涉及正则表达式(第二个"re.sub"表达式),替换就不起作用。
我很困惑为什么会这样。我已经尝试使用和取出"r"以及合并前瞻/后视表达式,但似乎没有任何效果。任何帮助将不胜感激!
1 2 3 4 5 | test_dict = {r'(\\d+)': 'THIS IS A NUMBER', 'john_doe':'THIS IS A NAME'} re.sub('(john_doe)', lambda x: test_dict.get(x.group(1),x.group(1)),'john_doe_jr') re.sub(r'(\\d+)', lambda x: test_dict.get(x.group(1), x.group(1)), '999la') |
因此,lambda 返回
您可以遍历字典的键并检查是否有任何键与您的捕获组匹配,然后替换它,但这具有 O(n) 时间复杂度(在字典的大小中)。
1 2 3 4 5 6 7 | def replacement(match, d, group=1): for key in d: if re.match(key, match.group(group)): return d[key] return match.group(group) re.sub(r'(\\d+)', lambda x: replacement(x, test_dict), '999la') |