如何确保我的Python正则表达式输出字典?

时间:2010-10-19 00:48:27

标签: python regex json

我正在使用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'}"]

如何确保我的解析数据最终成为字典类型?

2 个答案:

答案 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文字兼容,但这样做会打开一个巨大的安全漏洞。只是为了让你知道。