我正在尝试评估Flask项目中的字符串,但我不断收到此错误。
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
这是我正在使用的代码
def f(x):
input = "math.log((math.sin(x)**2) + 1) - (1 / 2)"
string = input.replace("x",str(x))
result = eval(string)
return result
答案 0 :(得分:1)
因为replace是字符串类的方法,所以必须从字符串本身调用它。
def f(x):
input = "math.log((math.sin(x)**2) + 1) - (1 / 2)"
string = input.replace("x",str(x))
result = eval(string)
return result
但是,除非绝对必要,否则应避免调用eval;评估是邪恶的。 Eval(及其堂兄exec)可以打开您的程序以进行任意代码注入。
您能多解释一下您的用例,我是否可以提出更好的替代方案?
为什么不起作用:
def f(x):
return math.log((math.sin(x)**2) + 1) - (1 / 2)
答案 1 :(得分:-1)
尝试更改
result = eval(string)
return result
到
return eval(string)