【问题标题】:Get data from JSON getting keyerror 0从 JSON 获取数据得到 keyerror 0
【发布时间】:2017-07-11 22:59:42
【问题描述】:
import requests
import simplejson as json
from pprint import pprint

url = 'http://api.openweathermap.org/data/2.5/weatherq=london&APPID=3eee8f807f05e481750751ea15da9b80'
response = requests.get(url).json()
pprint(response)

当我在终端中运行此代码时,我得到了

{u'base': u'站', u'clouds':{u'all':1}, 你'鳕鱼':200, u'coord': {u'lat': 29.94, u'lon': -90.35}, u'dt': 1499812500, u'id': 4322034, u'main': {u'湿度': 78, 你'压力':1017, 你'温度':301.58, u'temp_max':302.15, 你'temp_min':300.15}, u'name': u'伦敦', u'sys': {u'country': u'GB', 身份证号码:1184, 你的消息':0.0037, 你的“日出”:1499771353, 你的“日落”:1499821484, 你'类型':1}, u'可见性':16093, u'weather': [{u'description': u'小雨', u'icon': u'10d', 你'id':500, u'main': u'Rain'}, {u'description': u'thunderstorm', u'icon': u'11d', 用户名:211, u'main': u'Thunderstorm'}], u'wind': {u'deg': 191.503, u'speed': 2.17}}

然后我跑

resp_dict = json.loads(response)

从 json 数据中创建一个字典,以便我可以从键中获取数据,但是当我运行时

print(resp_dict['weather'])

print(resp_dict['weather'][0])

我只是得到一个 keyerror 0?任何帮助将不胜感激!

如果我只是跑步

print resp_dict

我也得到一个 keyerror 0

提前致谢!

【问题讨论】:

  • 你不需要在response上使用json.loads.json() 已经为您做到了。我不确定这将如何产生KeyError,但请尝试打印response['weather']。 (另外,使用 Python 3。)

标签: python arrays json list dictionary


【解决方案1】:

当您尝试访问 weather 时,KeyError 不会发生,它发生在 json.loads 的 simplejson 调用中。因为,正如 Ryan 所提到的,response 对象已经是一个 json(字典格式),而 json.loads 需要一个字符串。

直接使用response 对象应该可以工作

response = requests.get(url).json()
print response['weather']

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多