将字符串解析为字典
astr是一个“以字典形式”的字符串。 ast.literal_eval
将其转换为python字典对象。
In [110]: import ast
In [111]: astr="{'key1':'value1','key2':'value2'}"
In [113]: ast.literal_eval(astr)
Out[113]: {'key1': 'value1', 'key2': 'value2'}
请注意,如果有'astr'可以包含'os.remove(“foo”)''的任何方法,那么使用'eval'并不是一个好主意。实际上, – 2009-10-18 17:14:23
这是最好的,如果你对Python的2.6+,因为它不是受制于EVAL安全漏洞。
import ast
s = """{'key1':'value1','key2':'value2'}"""
d = ast.literal_eval(s)
你搞砸了报价。外部使用双引号。 – 2009-10-18 23:11:02
你从哪里得到这个字符串?它是JSON格式吗?或python字典格式?或者只是一些类似于python字典的ad-hoc格式?
如果是JSON,或者它只是字典,并且只包含字符串和/或数字,则可以使用json.loads
,这是最安全的选项,因为它无法分析python代码。
这种做法有一些不足之处,虽然,如果例如,该字符串用单引号'
,而不是双引号"
,更何况,它只是解析JSON对象/数组,其中仅巧合碰巧有着相似语法与pythons dicts /数组。
虽然我认为这可能是你得到的字符串是以JSON格式。我做这个假设是因为它是数据交换的通用格式。
保存它在哪里/如何? – SilentGhost 2009-10-18 16:17:23
什么?为什么不把dict保存为dict而不是首先创建一个字符串?请提供一些更多的背景资料。这个问题没有什么意义,并表示更大和更深的问题可能导致这一点。 – 2009-10-18 19:59:51
正如Dave指出的,http://*.com/questions/988228/converting-a-string-to-dictionary是这个 – dbr 2009-10-18 23:56:30