如何解析字典字符串?

时间:2015-04-08 12:02:55

标签: python python-2.7 dictionary

我正在尝试将字符串转换为具有dict功能的字典,如此

import json
p = "{'id':'12589456'}"
d = dict(p)
print d['id']  

但是我收到以下错误

ValueError: dictionary update sequence element #0 has length 1; 2 is required

为什么会失败?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

您拥有的是一个字符串,但dict函数只能迭代元组(键值对)来构造字典。请参阅dict文档中提供的示例。

在这种特殊情况下,您可以使用ast.literal_eval将字符串转换为相应的dict对象,就像这样

>>> p = "{'id':'12589456'}"
>>> from ast import literal_eval
>>> d = literal_eval(p)
>>> d['id']
'12589456'

答案 1 :(得分:1)

由于p是一个包含JSON(ish)的字符串,因此必须先加载它以获取Python字典。然后您可以访问其中的项目:

p = '{"id":"12589456"}'
d = json.loads(p)
print d["id"]

但是,请注意p中的值实际上不是JSON; JSON要求(以及Python json模块强制执行)字符串是用双引号引用的,而不是单引号。我已经在我的示例中对其进行了更新,但根据您的示例,您可能还有更多工作要做。