如何从这个json响应中提取某些数据?

时间:2015-02-10 20:17:17

标签: python json

这是在python中打开的链接:

response = urllib.request.urlopen('http://freegeoip.net/json/1.2.3.4').read()

print(response)

打印响应后,它会得到结果:

b'{"ip":"1.2.3.4","country_code":"US","country_name":"United States","region_code":"WA","region_name":"Washington","city":"Mukilteo","zip_code":"98275","time_zone":"America/Los_Angeles","latitude":47.913,"longitude":-122.305,"metro_code":819}\n'

我的问题是,我怎样才能打印区域名称?到目前为止我有这个代码:

import json
import urllib.request
response = urllib.request.urlopen('http://freegeoip.net/json/1.2.3.4').read()
print(response)
result = json.loads(response.decode('utf8'))

最后一点是拉出我坚持的特定数据。提前谢谢!

3 个答案:

答案 0 :(得分:3)

从json.loads返回的结果对象将是一个字典,因此您可以像这样打印该值:

print result['region_name']

如果钥匙不存在,甚至更好,更具防御性:

print result.get('region_name', 'No region specified')

另请注意,您的urllib调用应为:

response = urllib.urlopen('http://freegeoip.net/json/1.2.3.4').read()

答案 1 :(得分:1)

此时,您可以像访问python对象一样访问它:

result['region_code']

答案 2 :(得分:0)

你可以使用ast.literal_eval:

>>> import ast
>>> my_dict = ast.literal_eval(response.strip())
>>> my_dict['region_name']
'Washington'