首先,我想为我可怕的英语道歉 - 我不是英国人。
我的代码行有问题:
expression = re.sub("\w+", lambda m: "{}".format(functionsDICT[m.group(0)]), expression)
字典给我一个错误:
KeyError: 'pi'
字典(functionsDICT)包含我班级的函数名称。没有'pi',因为它来自其他模块。所以我想通过字典替换“表达式”字符串并且当re.sub发现某些东西不在字典中时不要停止代码(它保持在字符串中不变)。有点像尝试......除了。
提前感谢您的帮助。我希望,你了解我。
答案 0 :(得分:0)
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()
。