好吧,我们说我有一个字符串s = '5 + 7'
是否可以获得此字符串的结果? (应该是12)
我已尝试使用int(s)
,但会出错
答案 0 :(得分:5)
你正在寻找eval:
>>> s = '5 + 7'
>>> eval(s)
12
小心不要在不受信任的代码上运行它,因为恶意方可以使用它在您的系统上运行任意代码。例如,如果用户可以使s
等于"__import__('os').execve('/bin/sh',[],{})"
,那么eval(s)
将为用户提供计算机上的shell。
答案 1 :(得分:2)
这样做的安全方式(而不是eval()
功能)是使用ast库:
import ast
ast.literal_eval('5 + 7')
# -> 12