设为首页收藏本站

Crossin的编程教室

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

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

  [复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

181#
发表于 2017-6-25 19:04:37 |只看该作者
jinss 发表于 2017-6-25 15:07
cp936和gbk都试过了,city文件也相应改了,还是输入“北京”后直接结束,很伤
# -*- coding: cp936-*-
im ...

那你就输出下看看你的 cityname 拿到的是什么,
city是什么,citycode是什么

print repr(cityname)
print city
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

182#
发表于 2017-6-28 21:37:16 |只看该作者
请教一下,我查的天气好像和现实差的有点远呀,今天深圳都30度了,怎么查询结果是14℃~23℃
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

183#
发表于 2017-6-28 22:41:03 |只看该作者
wade 发表于 2017-6-28 21:37
请教一下,我查的天气好像和现实差的有点远呀,今天深圳都30度了,怎么查询结果是14℃~23℃
...

原来的那个接口停止更新了。你看看查天气(1)帖子里给的几个新的替代接口
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

44

积分

新手上路

Rank: 1

184#
发表于 2017-7-2 12:26:02 |只看该作者
python3.3版本,网址请求和gzip解压方式与python2版本不同,还有最初的天气接口已无更新,
可用接口:http://wthrcdn.etouch.cn/weather_mini?city=北京
通过gzip解压后,#_*_coding:cp936_*_这个编码问题就可以得到解决,亲测window系统同样可以使用utf-8,但没搞清楚原理。以下是python3.3查天气代码:

#_*_coding:cp936_*_
import urllib.request
from city import city
import gzip #调用gzip
import json

exit = False

while not exit:
    cityname = input('你想查询哪个城市的天气?输入q退出\n')
    if cityname == 'q' or cityname == 'Q':
        print('退出!')
        exit = True
    else:
        citycode = city.get(cityname)
        if citycode:
            url = ("http://wthrcdn.etouch.cn/weather_mini?citykey=%s" %citycode)
            request = urllib.request.Request(url)
            response = urllib.request.urlopen(request)
            content = response.read()
            content = gzip.decompress(content).decode('utf-8')#对数据进行解码
            print(content)
         
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

185#
发表于 2017-7-2 15:21:00 |只看该作者
swinh 发表于 2017-7-2 12:26
python3.3版本,网址请求和gzip解压方式与python2版本不同,还有最初的天气接口已无更新,
可用接口:http: ...

python3 文字比较的时候已经不会受限于编码,都转成unicode了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

44

积分

新手上路

Rank: 1

186#
发表于 2017-7-2 19:48:13 |只看该作者
crossin先生 发表于 2017-7-2 15:21
python3 文字比较的时候已经不会受限于编码,都转成unicode了

哦哦,谢谢老师!
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

187#
发表于 2017-7-11 18:00:47 |只看该作者
crossin老师好,我看了之前的回帖,在city.py和查天气程序代码之前都加了# -*- coding: gbk -*-
我是用anaconda下的spyder操作的,运行之后显示
SyntaxError: 'gbk' codec can't decode bytes in position 7-8: illegal multibyte sequence
貌似spyder默认utf-8(每次新建py文档都是直接把# -*- coding: utf-8 -*-加上)
谢谢老师了
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

188#
发表于 2017-7-11 18:27:08 |只看该作者
timself1995 发表于 2017-7-11 18:00
crossin老师好,我看了之前的回帖,在city.py和查天气程序代码之前都加了# -*- coding: gbk -*-
我是用anac ...

谢谢老师,多看了看之前的回复,采用了别人的方法,基本解决了
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

189#
发表于 2017-7-14 11:18:23 |只看该作者
feicien 发表于 2013-7-24 09:03

request=urllib.request.Request(url)是执行什么功能的?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

190#
发表于 2017-7-14 20:26:46 |只看该作者
tzp 发表于 2017-7-14 11:18
request=urllib.request.Request(url)是执行什么功能的?

创建一个 Request 对象,然后调用 urlopen 方法,
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-3 04:03 , Processed in 0.020872 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部