请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Python 第44课】 查天气(2)

  [复制链接]

0

主题

0

好友

12

积分

新手上路

Rank: 1

发表于 2018-11-11 16:01:29 |显示全部楼层
老师,请教您一下:
python2.7版本
我的import json 不生效,输出的结果还是json类型
代码:
/*
import urllib2
import json
from city import city
cityname = raw_input('你想查哪个城市的天气?\n')
citycode = city.get(cityname)
if citycode:
   url = 'http://www.weather.com.cn/data/cityinfo/%s.html' % citycode
   content = urllib2.urlopen(url).read()
   print content
*/


回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-11-11 17:23:09 |显示全部楼层
大黄 发表于 2018-11-11 16:01
老师,请教您一下:
python2.7版本
我的import json 不生效,输出的结果还是json类型

光import 没用啊,你要调用方法处理

data = json.loads(content)
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

发表于 2018-12-19 21:49:58 |显示全部楼层
crossin 先生好~新手上路,遇到了两个问题
用的访问地址是http://wthrcdn.etouch.cn/weather_mini?city=北京和http://wthrcdn.etouch.cn/weather_mini?citykey=101010100
第一个问题是
我用citycode是成功的,但是最后出来的风向里面有一些符号,不知道是什么意思
第二个问题是
我用城市名访问时就会失败
下面是我的代码,和用城市代码访问的区别就是没有读取city.py,其他都是一样的,求老师指点~~

#-*-coding:gbk-*-
import json
import urllib.request
import gzip


cityname=input('你想查哪个城市的天气?\n')
if cityname:
    url=('http://wthrcdn.etouch.cn/weather_mini?citykey=%s'%cityname)
    content=urllib.request.urlopen(url).read()
    data = gzip.decompress(content)#解压缩为json
    data_c=json.loads(data)#转换为中文
    result=data_c['data']
    str_yd=result['yesterday']
    str_fc=result['forecast']
    print('今日:\n温度:%s℃ 空气质量指数:%s\n建议:%s\n'%(result['wendu'],
                                            result['aqi'],result['ganmao']))
    print('昨日:\n%s %s %s %s %s %s\n'%(str_yd['date'],str_yd['type'],
                                      str_yd['high'],str_yd['low'],str_yd['fl'],str_yd['fx']))
    print('未来5天:')
    for day in str_fc:        
        print('%s %s %s %s %s %s'%(day['date'],day['type'],day['high'],
                                   day['low'],day['fengli'],day['fengxiang']))

else:
    print('没有你想要查询的城市。')
查天气失败.png
查天气.png
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2018-12-19 23:01:11 |显示全部楼层
小盒子 发表于 2018-12-19 21:49
crossin 先生好~新手上路,遇到了两个问题
用的访问地址是http://wthrcdn.etouch.cn/weather_mini?city=北 ...

那个符号是他数据的问题,你可以手动处理一下

城市名需用用 utf8进行编码后,通过 urlquote 转成url编码再进行请求,不然你这里直接发送中文是会有问题的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

发表于 2018-12-20 11:34:57 来自手机 |显示全部楼层
crossin先生 发表于 2018-12-19 23:01
那个符号是他数据的问题,你可以手动处理一下

城市名需用用 utf8进行编码后,通过 urlquote 转成url编码 ...

谢谢老师!两个问题都已经解决了!我用的是python3 ,在网上查了发现默认源码就是utf8,所以加了一行urllib.parse.quote就可以了!
老师回得好快,太谢谢啦~~☺
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2019-1-4 18:36:01 |显示全部楼层
老师,我用的编码是utf-8,试过换cp936和gtb,系统是WIN10,但是还是输入什么城市结果都是none,这个要怎么修改呢
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2019-1-5 11:05:44 |显示全部楼层
yby15 发表于 2019-1-4 18:36
老师,我用的编码是utf-8,试过换cp936和gtb,系统是WIN10,但是还是输入什么城市结果都是none,这个要怎么 ...

city.py 开头的也要改
而且你要确定你的编辑器没有帮你修改编码,如果是notepad++之类的,可以去编码设置里看下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

发表于 2019-1-5 17:33:30 |显示全部楼层
crossin先生 发表于 2019-1-5 11:05
city.py 开头的也要改
而且你要确定你的编辑器没有帮你修改编码,如果是notepad++之类的,可以去编码设置 ...

这个问题解决了,谢谢老师解答
回复

使用道具 举报

1

主题

0

好友

20

积分

新手上路

Rank: 1

发表于 2019-1-10 19:52:59 |显示全部楼层
本帖最后由 Fivenail 于 2019-1-10 19:58 编辑

看前面的帖子已经找到解决方法了
======================
老师,我按照你的方法做了,但是得到的结果不一样。
我用的是win10,py3,city.py我用记事本改成了utf-8编码
汉字和摄氏度符号都显示不出来,最开始还多出一个" b' "

没汉字没符号.png
回复

使用道具 举报

0

主题

0

好友

130

积分

注册会员

Rank: 2

发表于 2019-10-3 02:01:35 |显示全部楼层
本帖最后由 delapi 于 2019-10-3 02:13 编辑

已解决,在这个要求输入的地方输入gbk,里面呈现的内容就是中文的了,然后用这个文件去进行操作就很顺利了。如果有类似问题的人可以把这贴当个参考吧
---------------------------------------------------------------------------------------------

你好,我在学习这一课时碰到了一些问题:
我用的编辑器是pycharm,编码设置为utf-8 without DOM,电脑系统为win10,python为python3.
最初的问题跟前面的人问的差不多,city.py和编辑中的文件的开头分别用过了utf-8,cp936,gbk等等全部没有用。
然后我看到了你说到用编辑器处理一下city.py,我就重新下了一个想用idle编辑一下,但是遇到了如下提示:
The file's encoding is invalid for Python 3.x.
IDLE will convert it to UTF-8.
What's the current encoding of the file?截图如下:

idle报错

idle报错

请问这种情况该如何处理,这个需要填的地方应该填什么?还是说可以绕开这一步仍然可以解决最初的问题?
回复

使用道具 举报

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

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

GMT+8, 2024-3-29 17:18 , Processed in 0.027072 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部