从python 2.7中的openweathermap获取具体信息

时间:2016-03-07 17:11:21

标签: python json urllib2 weather-api openweathermap

我正在尝试创建一个python程序(作为大学练习),它将从用户获取坐标并将某些消息打印给用户,例如: 如果它在某个地区下雨,它会打印出来#34;我正在唱着雨"

import json,urllib2


while True:
    x=input("Give the longitude:")
    if x<=180 and x>=-180:
        x=str(x)
        break

while True:
    y=input("Give the latitude:")
    if y<=90 and y>=-90:
        y=str(y)
        break
url="http://api.openweathermap.org/data/2.5/weather?lat="+y+"&lon="+x+"&appid=01e7a487b0c262921260c09b84bdb456"
weatherbot=urllib2.urlopen(url)
weatherinfo=weatherbot.read()

到目前为止,我可以从Openweathermap获取信息,但如果我尝试获取类似的具体信息:

currentweather=weatherinfo["weather"]["main"]

它给了我这个错误信息:

TypeError:string indices must be integer, not str

尽管我这样做:

print weatherinfo

它似乎是一本字典。

有人可以向我解释我做错了吗?

PS:不建议在Python中安装额外的库,因为我不是100%确定我们的教授将使用所述库来检查我们的代码。

1 个答案:

答案 0 :(得分:1)

weatherinfo是一个JSON格式的字符串。要获得对其进行访问的字典,您需要通过json.load()

加载它
import json

weatherinfo = json.load(weatherbot)
print(weatherinfo["weather"][0]["main"])  # prints "Clear"