Python 从字符串到同态表达式

Python 从字符串到同态表达式,python,flask,sympy,Python,Flask,Sympy,最近,我正在使用Flask和Symphy库开发一个web应用程序。用户在文本区域中输入方程式,并将其记录为字符串。我想用辛函数solve()计算这个方程的结果。但为此,我必须将这个字符串转换为一个sympy表达式。我怎么能这么做 ` 您正在寻找的函数是sympify sympify()使用eval()这是危险的。改为使用。您可以使用parse_expr将字符串s转换为一个SymPy表达式,如下所示:我尝试在我的计算函数中使用它。它给了我一个类似的错误:def calculate():first\

最近,我正在使用Flask和Symphy库开发一个web应用程序。用户在文本区域中输入方程式,并将其记录为字符串。我想用辛函数solve()计算这个方程的结果。但为此,我必须将这个字符串转换为一个sympy表达式。我怎么能这么做

`


您正在寻找的函数是
sympify

sympify()
使用
eval()
这是危险的。改为使用。

您可以使用
parse_expr
将字符串
s
转换为一个SymPy表达式,如下所示:我尝试在我的计算函数中使用它。它给了我一个类似的错误:
def calculate():first\u eq=request.form['first\u eq']first\u eq2=parse\u expr(first\u eq)result=solve(first\u eq2)return result
first\u eq的内容是什么?请用你的代码编辑你的主要帖子。我添加了我的代码。第一个等式的内容是一个等于零的表达式。简化完成后,如何将结果表达式转换回字符串?@user3116936使用
str
函数。这个答案使用
eval()
,很危险,
parse_expr()
也使用
eval()
。事实上,对于大多数用法,
sympify()
都会回到
parse_expr()
from flask import Flask,request,render_template,flash
from sympy import *
from sympy.parsing.sympy_parser import *

x = symbols('x')
app = Flask(__name__)
app.secret_key = 'mysecretkey'


def calculate_():
    first_eq = request.form['first_eq']

    first_eq2= parse_expr(first_eq)
    result = solve(first_eq2)
    return result


@app.route("/",methods=['GET', 'POST'])
def myGet():

    return render_template("my-form.html")

@app.route("/myPost/",methods=['GET', 'POST'])
def myPost():
    answer = request.form['answer']
    result_of_answer=solve(Eq(answer),x)
    result = calculate_()
    try:
        if result == result_of_answer:
            flash("you got it!")
        else:
            flash("no, it's wrong")
            return render_template("my-form.html")
    except:
        flash("sorry, wrong type. Try again!")
        return render_template("my-form.html")
if __name__ == '__main__':
    app.run()`