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

如何确保Python正则表达式输出字典?,python,regex,json,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\((.*

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

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

如果您使用的是Python 2.6,您可以使用JSON模块解析JSON内容

import json
json.loads(dictString)
如果您使用的是早期版本的Python,那么可以下载该模块并使用它

例如:

>>> json.loads('{"hello" : 4}')
{u'hello': 4}

您需要使用JSON解析器将字符串表示转换为实际的Python数据结构

换句话说,您必须在代码末尾添加以下行

photos = json.loads(parsed_photos[0])

理论上,您也可以使用
eval
来实现与JSON相同的效果(几乎)与Python文本兼容,但这样做会打开一个巨大的安全漏洞。让您知道。

不太正确-您不能使用eval,因为JSON与Python文本不兼容。示例:Python使用
None
;JSON使用
null
。Python使用
true
/
False
;JSON使用
true
/
>false
@Smashery:这不是语法上的区别,你只需要为null/true/false定义局部变量,一切都会好起来。这不是我的建议,只要使用库就行了。我已经用你的第一个建议得到了一本字典-非常感谢!你能解释一下解析的图片[0]中的[0]是什么吗[0]表示?@bfox:findAll返回给定正则表达式的所有匹配项的数组,[0]只接受第一个元素。