考虑一下我们有以下输入
formula = "(([foo] + [bar]) - ([baz]/2) )"
function_mapping = {
"foo" : FooFunction,
"bar" : BarFunction,
"baz" : BazFunction,
}
Run Code Online (Sandbox Code Playgroud)
是否有任何python库可以解析公式并将其转换为python函数表示.
例如.
converted_formula = ((FooFunction() + BarFunction() - (BazFunction()/2))
Run Code Online (Sandbox Code Playgroud)
我目前正在研究类似的东西
In [11]: ast = compiler.parse(formula)
In [12]: ast
Out[12]: Module(None, Stmt([Discard(Sub((Add((List([Name('foo')]), List([Name('bar')]))), Div((List([Name('baz')]), Const(2))))))]))
Run Code Online (Sandbox Code Playgroud)
然后进一步处理这个树.
你知道任何更清洁的替代解决方案吗?非常感谢任何帮助或见解!