【问题标题】:Wunderground API to get hourly forecast returns error. - PythonWunderground API 获取每小时预测返回错误。 - Python
【发布时间】:2012-05-13 13:30:21
【问题描述】:

我正在尝试从 Wunderground API 获取每小时预报,但我的代码返回此错误。

Traceback(最近一次调用最后一次): 文件“weathergraph.py”,第 10 行,在 预测 = parsed_json['hourly_forecast']['FCTTIME']['temp']['english'] TypeError: 列表索引必须是整数,而不是 str

这是我的代码。

f=urllib2.urlopen('http://api.wunderground.com/api/mykey/hourly/q/NY/New_York_City.json')

json_string = f.read()

parsed_json = json.loads(json_string)

预测 = parsed_json['hourly_forecast']['FCTTIME']['temp']['english']

f.close()

parsed_json = http://pastie.org/3905346

【问题讨论】:

  • forecast = 行的某个时刻,您访问的是列表,而不是字典。您应该将该行分成四行,并准确确定是哪个实例导致了异常。
  • 好的,现在如何在 Python 中访问 json 列表?以及如何区分 JSON 本身?
  • 经过一些测试,这可行:forecast = parsed_json['hourly_forecast']。但这不是:forecast = parsed_json['hourly_forecast']['FCTTIME']。所以 FCCTTIME 和接下来的一切都是奇怪的吗?那我该如何处理呢?
  • 在分配 parsed_json 后立即添加行 print parsed_json。在您的问题中发布该输出,我们将能够告诉您如何提取信息。
  • 完成。把它放在馅饼里。

标签: python api wunderground


【解决方案1】:

1) hourly_forecast 的值是一个字典列表,而不是字典。看起来列表中大约有 36 个。

2) temp 不是 FCTTIME 的元素。他们是同一级别的

这不会产生错误:

forecast = parsed_json['hourly_forecast'][-1]['temp']['english'] 

看起来列表是按时间排序的,所以最后一个是最近的。检查 FCTTIME 的内容会告诉你它是否与你上次阅读的不同。

【讨论】:

  • -1,这是干什么用的?谢谢。
  • [-1] 为您提供列表的最后一个元素。
  • 谢谢。想通了。
猜你喜欢
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多