我所需要做的就是将一个字符串转换成一个简单的对象,比如:"1/4*x+ 1" to 1/4*x+ 1我正在从图像中提取文本并计算图像中的表达式。如果我从图像中获得:valid_text = 1/4*x+ 1= 1/6*x+ 1/2,我将执行以下操作:
if 'x' in valid_text and '=' in valid_text:
lhs = valid_text.rsplit('=', 1)[0]
lhs = eval(lhs)
rhs = valid_text.rsplit('=', 1)[1]
rhs = eval(rhs)
solution = solve(Eq(lhs, rhs), x)当我传入一个字符串时,我正在使用eval()函数返回一个对象。但eval()函数有时会给出
rhs = eval(rhs)
File "<string>", line 1, in <module>
TypeError: 'int' object is not callable` **AND other inappropriate outputs.**有没有其他方法可以从字符串中获取对象?
发布于 2015-06-11 17:34:03
这是一个完整的解决方案
from sympy import solve
from sympy.abc import x, y, z, a, b
from sympy.parsing.sympy_parser import parse_expr
def solve_meThis(string_):
try:
lhs = parse_expr(string_.split("=")[0])
rhs = parse_expr(string_.split("=")[1])
solution = solve(lhs-rhs)
return solution
except:
print "invalid equation"
valid_text = "1/4*x+ 1 = 1/6*x+ 1/2"
solve_meThis(valid_text)
>> -6发布于 2015-06-11 16:54:21
看起来你想做符号演算。据我所知,python没有处理这种类型的问题,但库simpy似乎可以处理。您可以在http://scipy-lectures.github.io/advanced/sympy.html上找到有关它的信息
另一种方法是自己开发一个语法和句法解析器,但如前所述,这是一个很长的路要走。
祝好运!
发布于 2015-06-11 17:06:04
如果您试图解析的字符串表示SymPy表达式,那么sympy.parsing.sympy_parser.parse_expr看起来就像是完成这项工作的工具。
In [8]: from sympy.parsing.sympy_parser import parse_expr
In [9]: parse_expr('2*x*sin(x)')
Out[9]: 2*x*sin(x)https://stackoverflow.com/questions/30775453
复制相似问题