我有以下字符串,它是一個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