我有以下字符串,它是一个Python字典字符串化:如何将弦乐字典转换为Python字典?
some_string = '{123: False, 456: True, 789: False}'
如何获得Python的字典出上面的字符串的?
我有以下字符串,它是一个Python字典字符串化:如何将弦乐字典转换为Python字典?
some_string = '{123: False, 456: True, 789: False}'
如何获得Python的字典出上面的字符串的?
好了,你可以做
d = eval(some_string)
但是,如果字符串中包含用户输入,这是一个坏主意,因为一些随机的恶意功能可能是在表达。见Safety of Python 'eval' For List Deserialization
所以更安全的替代可能是:
import ast
d = ast.literal_eval(some_string)
从http://docs.python.org/library/ast.html#ast.literal_eval:
字符串或提供可能只包括以下 的Python字面结构的节点:字符串,数字,元组,列表,字典,布尔值, 和None。
安全评估的表达式节点或含有Python表达式的字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,字典,布尔值和无。
这可以用于从不受信任的来源安全地评估包含Python表达式的字符串,而不需要自己解析值。
例子:
>>> some_string = '{123: False, 456: True, 789: False}'
>>> import ast
>>> ast.literal_eval(some_string)
{456: True, 123: False, 789: False}
唯一安全办法做到这一点是ast.literal_eval(它是安全的,因为,不同于内置eval
“”“提供的字符串或节点可以仅由以下Python文字结构:字符串,数字,元组,列表,字典,布尔值和无。“”
感谢您的接受! – 2010-09-17 19:07:32