如何将字符串字典转换为Python字典?
我有以下字符串,它是一个经过字符串化的Python字典:如何将字符串字典转换为Python字典?,python,Python,我有以下字符串,它是一个经过字符串化的Python字典: some_string = '{123: False, 456: True, 789: False}' 如何从上面的字符串中提取Python字典?好的,您可以这样做 d = eval(some_string) 但是如果字符串包含用户输入,这是一个坏主意,因为表达式中可能存在一些随机的恶意函数。看 因此,更安全的选择可能是: import ast d = ast.literal_eval(some_string) 发件人: 提供的字符
some_string = '{123: False, 456: True, 789: False}'
如何从上面的字符串中提取Python字典?好的,您可以这样做
d = eval(some_string)
但是如果字符串包含用户输入,这是一个坏主意,因为表达式中可能存在一些随机的恶意函数。看
因此,更安全的选择可能是:
import ast
d = ast.literal_eval(some_string)
发件人:
提供的字符串或节点只能由以下内容组成
Python文字结构:字符串、数字、元组、列表、dicts、boolean、,
没有
使用:
安全地计算表达式节点或包含Python表达式的字符串。提供的字符串或节点只能由以下Python文本结构组成:字符串、数字、元组、列表、dicts、boolean和None
这可以用于安全地计算包含来自不受信任源的Python表达式的字符串,而无需自己解析值
例如:
>>> some_string = '{123: False, 456: True, 789: False}'
>>> import ast
>>> ast.literal_eval(some_string)
{456: True, 123: False, 789: False}
唯一安全的方法是使用(这是安全的,因为与内置的eval
不同,“提供的字符串或节点可能只包含以下Python文本结构:字符串、数字、元组、列表、dicts、boolean和None。”)