Python使用ast.literal_eval评估包含Python文字的字符串
示例
如果您的字符串包含Python文字,例如字符串,浮点数等,则可以使用ast.literal_eval代替来评估其值eval。这具有仅允许某些语法的附加功能。
>>> import ast
>>> code = """(1, 2, {'foo': 'bar'})"""
>>> object = ast.literal_eval(code)
>>> object
(1, 2, {'foo': 'bar'})
>>> type(object)
<class 'tuple'>但是,这对于执行不受信任的用户提供的代码并不安全,并且使用精心设计的输入使解释器崩溃很简单。
>>> import ast
>>> ast.literal_eval('()' * 1000000)
[5] 21358 segmentation fault (core dumped) python3在这里,输入是()重复的一百万次的字符串,这会导致CPython解析器崩溃。CPython开发人员不会将解析器中的错误视为安全问题。
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西