我正在使用Beej的Python Flickr API向Flickr询问JSON。未解析的字符串Flickr返回如下所示:
jsonFlickrApi({'photos': 'example'})
我想以字典的形式访问返回的数据,所以我有:
photos = "jsonFlickrApi({'photos': 'test'})"
# to match {'photos': 'example'}
response_parser = re.compile(r'jsonFlickrApi\((.*?)\)$')
parsed_photos = response_parser.findall(photos)
但是,parsed_photos是一个列表,而不是字典(根据类型(parsed_photos)。它输出如下:
["{'photos': 'test'}"]
如何确保我的解析数据最终成为字典类型?
答案 0 :(得分:1)
如果您使用的是Python 2.6,则可以使用JSON模块来解析JSON内容。
import json
json.loads(dictString)
如果您使用的是早期版本的Python,则可以下载simplejson模块并使用它。
示例:
>>> json.loads('{"hello" : 4}')
{u'hello': 4}
答案 1 :(得分:1)
您需要使用JSON解析器将字符串表示转换为实际的Python数据结构。有关示例,请查看标准库中json模块的文档。
换句话说,您必须在代码末尾添加以下行
photos = json.loads(parsed_photos[0])
PS。从理论上讲,您也可以使用eval
来实现相同的效果,因为JSON(几乎)与Python文字兼容,但这样做会打开一个巨大的安全漏洞。只是为了让你知道。