我想得到GPSLatitude和GPSLongitude的值,但是我不能使用python位置,因为位置是非常随机的。我通过标签的值得到值,我怎么能做到呢?在
jsonFlickrApi({ "photo": { "id": "8566959299", "secret": "141af38562", "server": "8233", "farm": 9, "camera": "Apple iPhone 4S",
"exif": [
{ "tagspace": "JFIF", "tagspaceid": 0, "tag": "JFIFVersion", "label": "JFIFVersion",
"raw": { "_content": 1.01 } },
{ "tagspace": "JFIF", "tagspaceid": 0, "tag": "ResolutionUnit", "label": "Resolution Unit",
"raw": { "_content": "inches" } },
{ "tagspace": "JFIF", "tagspaceid": 0, "tag": "XResolution", "label": "X-Resolution",
"raw": { "_content": 72 },
"clean": { "_content": "72 dpi" } },
{ "tagspace": "JFIF", "tagspaceid": 0, "tag": "YResolution", "label": "Y-Resolution",
"raw": { "_content": 72 },
"clean": { "_content": "72 dpi" } },
{ "tagspace": "GPS", "tagspaceid": 0, "tag": "GPSLatitudeRef", "label": "GPS Latitude Ref",
"raw": { "_content": "North" } },
{ "tagspace": "GPS", "tagspaceid": 0, "tag": "GPSLatitude", "label": "GPS Latitude",
"raw": { "_content": "39 deg 56' 44.40\"" },
"clean": { "_content": "39 deg 56' 44.40\" N" } },
{ "tagspace": "GPS", "tagspaceid": 0, "tag": "GPSLongitudeRef", "label": "GPS Longitude Ref",
"raw": { "_content": "East" } },
{ "tagspace": "GPS", "tagspaceid": 0, "tag": "GPSLongitude", "label": "GPS Longitude",
"raw": { "_content": "116 deg 16' 10.20\"" },
"clean": { "_content": "116 deg 16' 10.20\" E" } },
] }, "stat": "ok" })
除了右括号
]
前的最后一个逗号外,FlickrAPI返回的整个对象是valid json。在假设逗号仅仅是一个复制粘贴错误(example evidence表明是这样),那么内置的json module仍然不能按原样使用。这是因为即使像
"116 deg 16' 10.20\" E"
这样的字符串是valid json,python的json模块也会抱怨一个ValueError,因为双引号"
没有被充分引用:解决方案是添加另一个转义反斜杠:
^{pr2}$对于完整的} module 添加额外的反斜杠:
jsonFlickrApi
响应,可以使用^{然后,可以在对
json.loads
的调用中使用引用的响应,然后可以轻松地访问新生成的字典结构中所需的数据:如果将整个字符串看作
jsonFlickrApi(XXX)
,XXX
是一个标准的JSON字符串。使用json
库,XXX
可以转换为python字典,然后很容易地进行解析。在您不会说您是否使用了flickrapi;我认为不是,因为如果您使用的是flickrapi之类的API,那么处理JSON响应就很简单了。在
但是继续假设您没有使用API,您看到的响应格式实际上是JSONP,它比Python更适合Javascript。但是,您可以请求JSON表示形式的响应,该响应没有封闭的}组合使用也可以
^{pr2}$jsonFlickrApi()
函数包装器。通过在请求的查询参数中指定format=json&nojsoncallback=1
来完成此操作。使用requests库可以很容易地请求和解析JSON响应,但是如果您不能使用requests
,那么使用urllib2.urlopen()
和{相关问题 更多 >
编程相关推荐