如何将Latex解析为Python表达式

问题描述

我发现了sheet-uris python库之类的手册库,它们也在测试中,但无法正常解析。

如果我有一个变量Sympy要与ABC相乘,但3表示SympyABC

那么,关于使用哪种技术在数据库中保存方程式或公式并在运行时进行计算并动态提供变量值的任何想法?

解决方法

可以使用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

中找到

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...