0

您好,我正在尝试使用 python 3 获取地下天气的 API 请求,以简单打印天气状况,有人可以给我提示我做错了什么吗?我在这里有很多东西要学,所以学习曲线很陡!抱歉,如果问题是超级基本的,那么在两者之间使用更好的代码是什么?至少有一个我可以开始工作,然后建立...谢谢。下面这两个代码都是我从 WU 网站和 Github 获得的示例脚本。第一个代码给了我一个错误“用于观察数据(['history']['observations']):TypeError:列表索引必须是整数或切片,而不是str”

from urllib.request import urlopen
import json

api_key = ""
date = "20170901"
zip_code = "53711"

response = urlopen("http://api.wunderground.com/api/%s/history_%s/q/%s.json" 
% (api_key, date, zip_code))

json_data = response.read().decode('utf-8', 'replace')

data = json.loads(json_data)

for observation in data (['history']['observations']):
     print("Date/Time:    " + observation['date']['pretty'])
     print("Temperature:  " + observation['tempi'])
     print("Humidity:     " + observation['hum'])

这是我的第一个 API 请求的第二次尝试,但它给了我一个错误“TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'”

from urllib.request import urlopen
import json

f = urlopen('http://api.wunderground.com/api//geolookup/conditions/q/IA/Cedar_Rapids.json')

json_string = f.read()

parsed_json = json.loads(json_string)

location = parsed_json['location']['city']

temp_f = parsed_json['current_observation']['temp_f']

print ("Current temperature in %s is: %s") % (location, temp_f)
f.close()

非常感谢专业人士可以就此类自学主题提供新手的任何提示...我可以从 WU 看到我的 API 密钥正在工作...但是代码是错误的 :(

4

1 回答 1

0

您在第二个示例中遇到错误的原因是因为这似乎是无效的语法。我认为您正在寻找类似于以下内容的内容。

print("this is a %s" % ("my string",))

话虽如此,我不久前整理了一个软件包,以帮助您开始使用 Wea​​ther Underground,如果您想查看一些指示。或者只是 pip install WunderWeather。这是文档。

于 2017-12-05T02:42:09.977 回答