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

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

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

最佳答案 您需要使用JSON解析器将字符串表示转换为实际的Python数据结构.有关示例,请查看标准库中的
json模块的文档.

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

photos = json.loads(parsed_photos[0])

PS.从理论上讲,你也可以使用eval来实现相同的效果,因为JSON(几乎)与Python文字兼容,但这样做会打开一个巨大的安全漏洞.只是让你知道.

点赞