re.sub用字典替换字符串时的键错误

时间:2015-03-01 20:12:43

标签: python regex python-3.x dictionary replace

首先,我想为我可怕的英语道歉 - 我不是英国人。

我的代码行有问题:

expression = re.sub("\w+", lambda m: "{}".format(functionsDICT[m.group(0)]), expression)

字典给我一个错误:

KeyError: 'pi'

字典(functionsDICT)包含我班级的函数名称。没有'pi',因为它来自其他模块。所以我想通过字典替换“表达式”字符串并且当re.sub发现某些东西不在字典中时不要停止代码(它保持在字符串中不变)。有点像尝试......除了。

提前感谢您的帮助。我希望,你了解我。

1 个答案:

答案 0 :(得分:0)

使用dict.get(key, default)方法:

expression = re.sub("\w+", lambda m:
    '{}'.format(functionsDICT.get(m.group(0), m.group(0))), expression)

也就是说,如果在字典中找不到第一个参数m.group(0)get将返回第二个参数m.group(0) - 在您的示例中用{{1}替换"pi" 1}}。

请注意,除非您的值使用默认格式说明符,否则您可以使用"pi"代替str()