我有以下字符串,它是一个字典串化的Python字典:
some_string = '{123: False, 456: True, 789: False}'
Run Code Online (Sandbox Code Playgroud)
如何从上面的字符串中获取Python字典?
Mar*_*ers 11
安全地评估表达式节点或包含Python表达式的字符串.提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.
这可以用于安全地评估包含来自不可信来源的Python表达式的字符串,而无需自己解析值.
例:
>>> some_string = '{123: False, 456: True, 789: False}'
>>> import ast
>>> ast.literal_eval(some_string)
{456: True, 123: False, 789: False}
Run Code Online (Sandbox Code Playgroud)
好吧,你可以做到
d = eval(some_string)
Run Code Online (Sandbox Code Playgroud)
但是如果字符串包含用户输入,那么这是一个坏主意,因为一些随机恶意函数可能在表达式中.有关列表反序列化,请参阅Python"eval"的安全性
所以更安全的替代方案可能是:
import ast
d = ast.literal_eval(some_string)
Run Code Online (Sandbox Code Playgroud)
来自http://docs.python.org/library/ast.html#ast.literal_eval:
提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None.
| 归档时间: |
|
| 查看次数: |
4798 次 |
| 最近记录: |