围棋常昊爱人

自学Python编程【第四十三节】查天气(3)

欢迎您来到马哥Python培训自学教室,在前两节课我们谈到了查天气的?#35757;悖?#20063;跟大家说了解决办法,并且也给大家开了个头,不知?#26469;?#23478;有没有完成剩下的查询过程呢?没有的话,我们一起来学习一下,完成了的话,我们一起对照一下吧:

自学Python编程【第四十三节】查天气(3)

看一下我们已经拿到的json格式的天气数据:

{ 
"weatherinfo": {
"city": "南京",
"cityid": "101190101",
"temp1": "37℃",
"temp2": "28℃",
"weather": "多云",
"img1": "d1.gif",
"img2": "n1.gif",
"ptime": "11:00"
}
}

直接在命令行中看到的应该是没有换行和空格的一长串字符,这里我把格式整理了一下。可以看出,它像?#19988;?#20010;字典的结构,但是有两层。最外层只有一个key–“weatherinfo?#20445;?#23427;的value是另一个字典,里面包含了好几项天气信息,现在我们最关心的就是其中的temp1,temp2和weather。

虽然看上去像字典,但它对于程序来说,仍然?#19988;?#20010;字符串,只不过?#19988;?#20010;满足json格式的字符串。我们用Python中json模块提供的loads方法,把它转成一个真正的字典。

import json 
data = json.loads(content)

这时候的data已经?#19988;?#20010;字典,尽管在控制台中输出它,看上去和content没什么区别,只是编码上有些不同:

{u'weatherinfo': {u'city': u'\u5357\u4eac', u'ptime': u'11:00', u'cityid': u'101190101', u'temp2': u'28\u2103', u'temp1': u'37\u2103', u'weather': u'\u591a\u4e91', u'img2': u'n1.gif', u'img1': u'd1.gif'}}

但如果你用type方法看一下它们的类型:

print type(content) 
print type(data)

就知道区别在哪里了。

之后的事情就比较容易了。

result = data['weatherinfo'] 
str_temp = ('%s\n%s ~ %s') % (
result['weather'],
result['temp1'],
result['temp2']
)
print str_temp

为了防止在请求过程中出错,我?#30001;?#20102;一个异常处理。

try: 
###
###
except:
print '查询失败'

以及没有?#19994;?#22478;市时的处理:

if citycode: 
###
###
else:
print '没有?#19994;?#35813;城市'
自学Python编程【第四十三节】查天气(3)

恭喜您在Python自学的道路上又坚持了一天,不知道今天的课程下来你觉得在用Python编程查询天气的过程中,还有什么不完善的地方吗?还有可以改进的地方吗?如果有的话,怎么改进、怎么完善呢?更多Python相关的内容尽在马哥Python培训机构官网,敬请关注!

好啦,今天的分享到这里就结束了,希望大家能够?#20013;?#35266;望马哥教育官网,每天都会有大量优质内容与大家分享欧!免责声明:内容和?#35745;?#28304;自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

相关新闻

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:[email protected]

工作时间:周一至周日,09:00-18:30

QR code
围棋常昊爱人
10000炮李逵劈鱼下载 泳坛夺金杀号技巧 福建时时彩软件手机版 3d捕鱼大富翁 香港一诗两码中特 最新股票指数 河南十一选五前三组技巧 3d试机号今天查询 将军电子游艺网站 南京麻将胡牌图解