问题描述
我发现了sheet-uris
python库之类的手册库,它们也在测试中,但无法正常解析。
如果我有一个变量Sympy
要与ABC
相乘,但3
表示Sympy
为ABC
那么,关于使用哪种技术在数据库中保存方程式或公式并在运行时进行计算并动态提供变量值的任何想法?
解决方法
可以使用patch.multiple
在Python中解析表达式。例如,sympy
允许通过以下方式将'-5abc ^ 2'转换为sympy
:
expression=-5*a*b*c**2
您可能想撤消该过程(将表达式转换为LaTeX脚本),然后只需调用from sympy.parsing.sympy_parser import parse_expr,standard_transformations,implicit_multiplication_application,convert_xor
transformations = (standard_transformations + (implicit_multiplication_application,))
expression = parse_expr('-5abc^2',transformations=transformations)
您可以在解析sympy表达式的documentation中找到更多信息。
更新:
假设“ abc”是一个变量。然后,“-5abc ^ 2”表示-5个abc平方。这需要定义自定义变量列表,这些变量可以在使用sympy.latex(expression)
转换时进行拆分。 (我也将split_symbols_custom(...)
替换为implicit_multiplication_application
)
implicit_multiplication
因此,from sympy.parsing.sympy_parser import parse_expr,implicit_multiplication,split_symbols_custom,_token_splittable,convert_xor
def can_split(symbol):
if symbol not in ('abc',):
return _token_splittable(symbol)
return False
transformation = split_symbols_custom(can_split)
transformations = (standard_transformations + (transformation,convert_xor))
expression = parse_expr('-5abc^2',transformations=transformations)
print(expression)
现在被解析为'-5abc^2'
。可以在documentation of split_symbols_custom