设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第45课】 查天气(3)

[复制链接]

0

主题

0

好友

16

积分

新手上路

Rank: 1

楼主
发表于 2016-9-20 21:55:33 |显示全部楼层
因为用的是notepad++的编辑器,尝试着如crossin先生说的一样编码直接设置成gbk,但是没有成功。运行总是显示查询失败,后来尝试打印出每个步骤的结果,然后查资料找了json的loads使用注意事项找出了原因,就是如果传入json的字符串不是utf-8编码的话,就无法调用json的loads方法,因为前面content只有转换成gbk才能显示,所以这一步要指定字符编码。编码如下:
  1. # -*- coding:utf-8 -*-
  2. import urllib2
  3. import json
  4. from city import city

  5. cityname = raw_input('你想查哪里城市的天气?\n'.decode('utf-8').encode('gbk'))
  6. citycode = city.get(cityname.decode('gbk').encode('utf-8'))
  7. if citycode:
  8.         try:
  9.                 url = ('http://www.weather.com.cn/data/cityinfo/%s.html' % citycode)
  10.                 content = urllib2.urlopen(url).read().decode('utf-8').encode('gbk')
  11.                 data = json.loads(content,encoding = 'gbk')
  12.                 result = data['weatherinfo']
  13.                 str_temp = ('%s\n%s ~ %s') % (result['weather'], result['temp1'], result['temp1'])
  14.                 print str_temp
  15.         except:
  16.                 print u'查询失败'
  17. else:
  18.         print u'没有找到该城市'
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-3 06:03 , Processed in 0.024885 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部