首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串转换为方程并进行求解

将字符串转换为方程并进行求解
EN

Stack Overflow用户
提问于 2015-06-11 16:25:51
回答 4查看 805关注 0票数 2

我所需要做的就是将一个字符串转换成一个简单的对象,比如:"1/4*x+ 1" to 1/4*x+ 1我正在从图像中提取文本并计算图像中的表达式。如果我从图像中获得:valid_text = 1/4*x+ 1= 1/6*x+ 1/2,我将执行以下操作:

代码语言:javascript
运行
复制
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()函数有时会给出

代码语言:javascript
运行
复制
rhs = eval(rhs)
File "<string>", line 1, in <module>
TypeError: 'int' object is not callable` **AND other inappropriate outputs.**

有没有其他方法可以从字符串中获取对象?

EN

回答 4

Stack Overflow用户

发布于 2015-06-11 17:34:03

这是一个完整的解决方案

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2015-06-11 16:54:21

看起来你想做符号演算。据我所知,python没有处理这种类型的问题,但库simpy似乎可以处理。您可以在http://scipy-lectures.github.io/advanced/sympy.html上找到有关它的信息

另一种方法是自己开发一个语法和句法解析器,但如前所述,这是一个很长的路要走。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2015-06-11 17:06:04

如果您试图解析的字符串表示SymPy表达式,那么sympy.parsing.sympy_parser.parse_expr看起来就像是完成这项工作的工具。

代码语言:javascript
运行
复制
In [8]: from sympy.parsing.sympy_parser import parse_expr

In [9]: parse_expr('2*x*sin(x)')
Out[9]: 2*x*sin(x)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30775453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档