【发布时间】:2016-12-07 11:15:22
【问题描述】:
例如,如果我有:
x = '12'
print(int(x))
会将x 转换为字符串中的整数。
如果我有怎么办:
x = '1+2'
我想要 3 作为我的输出,因为 + 不能直接转换为 int,我该怎么做?
【问题讨论】:
-
eval(x)将给出 3。您甚至尝试过先搜索吗?
例如,如果我有:
x = '12'
print(int(x))
会将x 转换为字符串中的整数。
如果我有怎么办:
x = '1+2'
我想要 3 作为我的输出,因为 + 不能直接转换为 int,我该怎么做?
【问题讨论】:
eval(x) 将给出 3。您甚至尝试过先搜索吗?
使用literal_eval,它比使用eval 更安全。 literal_eval 安全地计算表达式节点或包含 python 表达式的字符串。
import ast
x = ast.literal_eval('1+2')
【讨论】:
您可以使用 eval 函数来完成此操作;但是,应该注意的是,允许对 eval 函数进行未经处理的输入可能会带来重大的安全风险。这是一个例子:
x = '1 + 2'
print(eval(x))
【讨论】:
在这里你可以使用eval。
用法是eval(expression[, globals[, locals]])。
所以
eval('1+2')
3
【讨论】: