如何确保Python正则表达式输出字典?
我正在使用Beej的Python Flickr API向Flickr请求JSON。Flickr返回的未解析字符串如下所示:如何确保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\((.*
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]只接受第一个元素。