我正在使用Sympy的sympify函数来简化2个表达式,所以我可以比较它们的相等性.
例如:
expr1 = sympify("(2 * x) + (x + 10)")
expr2 = sympify("(x + 10) + (x * 2)")
if expr1 == expr2:
print "Congrats those are essentially the same!"
Run Code Online (Sandbox Code Playgroud)
但是当使用表格2x作为x*2时,我得到一个解析异常,例如:
expr1 = sympify("2x + (x + 10)")
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我很同意理解2x表格吗?
如果没有,是否有其他库允许此表格?
好吧,您可以修改 sympy 词法分析器(或解析器/语法/其他)。
您还可以使用一个为您转换输入字符串的函数来包装它,使用如下所示:
>>> import re
>>> expr = '2x + 1'
>>> re.sub(r"(\d+)(\w+)", r"(\1 * \2)", expr)
'(2 * x) + 1'
Run Code Online (Sandbox Code Playgroud)
但问问自己为什么一开始就没有这个符号。
例如,所有这些都是有效的 python,虽然自从我搞乱 sympy 以来已经很长一段时间了,但我敢打赌它们除了 sympy 中的乘法之外还有其他含义:
0x32 # hex for 50
5e-3 # 0.005
2j # 2 * sqrt(-1) (so that one *is* multiplication, but by 1j, not j!)
15L # 15 (L used to represent long integers in python)
Run Code Online (Sandbox Code Playgroud)
是什么x2意思?它是一个名为的变量x2还是它的意思(x * 2)。我故意将这种情况排除在上面的正则表达式之外,因为它非常模糊。
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |