【发布时间】:2014-06-07 22:20:26
【问题描述】:
这是我的代码不起作用:
def myfunc(d):
for name, pat in d.items():
originalstring = pat
pattern = '#\w+#'
pattern_obj = re.compile(pattern)
replacement_string = '('+d['\\1']+')'
d[name] = pattern_obj.sub(replacement_string, originalstring)
return d
我收到一条错误消息:
KeyError: '\\1'
【问题讨论】:
-
什么不起作用?你有错误吗?
-
@user3527631 您希望它如何工作?
'\\1'不是密钥,所以你会得到一个KeyError。 -
你只是在编译模式,没有匹配任何东西。可能您必须调用
re.find,然后将其结果用作键或类似键。 -
问题是您正在使用该键在执行子操作之前访问字典。该键不被解释为正则表达式的一部分,而只是一个不存在的键。
标签: python regex dictionary ebnf mutated