Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串字典转换为Python字典?_Python - Fatal编程技术网

如何将字符串字典转换为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) 发件人: 提供的字符

我有以下字符串,它是一个经过字符串化的Python字典:

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。”)