设为首页收藏本站

Crossin的编程教室

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

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

  [复制链接]

0

主题

0

好友

16

积分

新手上路

Rank: 1

151#
发表于 2016-9-16 23:44:25 |只看该作者
本帖最后由 sunbaodi 于 2016-9-16 23:47 编辑

   开始遇到无法读取city.py的问题,在city.py里面加了coding:utf-8,但是后面输入城市之后就自动结束程序了,后来看其他同学的回复琢磨出正确的方法了,谢谢crossin先生,谢谢各位。
   介绍下情况,win7系统,编辑器:notepad++。
代码如下:
# -*- coding:utf-8 -*-
import urllib2
import json
from city import city

cityname = raw_input('你想查哪里城市的天气?\n'.decode('utf-8').encode('gbk'))
citycode = city.get(cityname.decode('gbk').encode('utf-8'))
if citycode:
        url = ('http://www.weather.com.cn/data/cityinfo/%s.html' % citycode)
        content = urllib2.urlopen(url).read().decode('utf-8').encode('gbk')
        print content

运行情况:
PS C:\Users\sunbaodi\mystuff> python 024.py
你想查哪里城市的天气?
无锡
{"weatherinfo":{"city":"无锡","cityid":"101190201","temp1":"4℃","temp2":"16℃",
"weather":"晴转多云","img1":"n0.gif","img2":"d1.gif","ptime":"18:00"}}
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

152#
发表于 2016-9-17 10:44:53 |只看该作者
sunbaodi 发表于 2016-9-16 23:44
开始遇到无法读取city.py的问题,在city.py里面加了coding:utf-8,但是后面输入城市之后就自动结束程序 ...

你的方法是对的。

不过其实有个简单的方法,就是你把代码里面的编码都直接设成 gbk,省的自己再转了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

153#
发表于 2016-10-4 10:02:52 |只看该作者
求助先生
win10
开头加了这个
这是报错
# coding: gbk
Message        File Name        Line        Position       
SyntaxError                               
    'gbk' codec can't decode bytes in position 361-362: illegal multibyte sequence (weather2.py, line 0)        D:\python\weather2.py                       
怎么解决
回复

使用道具 举报

0

主题

0

好友

12

积分

新手上路

Rank: 1

154#
发表于 2016-10-4 10:46:23 |只看该作者
crossin先生 发表于 2016-9-17 10:44
你的方法是对的。

不过其实有个简单的方法,就是你把代码里面的编码都直接设成 gbk,省的自己再转了 ...

求助先生
win10
开头加了这个
# coding: gbk
这是报错

Message        File Name        Line        Position       
SyntaxError                               
    'gbk' codec can't decode bytes in position 361-362: illegal multibyte sequence (weather2.py, line 0)        D:\python\weather2.py                       
怎么解决
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

155#
发表于 2016-10-5 19:29:38 |只看该作者
sfzyk 发表于 2016-10-4 10:46
求助先生
win10
开头加了这个

你的编辑器自己设定了编码吧,你找找看设置里有没有
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

156#
发表于 2016-11-4 22:50:50 |只看该作者
老师你好!我这里是Windows7系统的。Python2.75,在把city.py编码改成cp936的时候运行,输入城市,就会报错
  1. Traceback (most recent call last):
  2.   File "D:\python27\test4.py", line 11, in <module>
  3.     content=urllib2.urlopen(url).read()
  4.   File "D:\python27\lib\urllib2.py", line 127, in urlopen
  5.     return _opener.open(url, data, timeout)
  6.   File "D:\python27\lib\urllib2.py", line 410, in open
  7.     response = meth(req, response)
  8.   File "D:\python27\lib\urllib2.py", line 523, in http_response
  9.     'http', request, response, code, msg, hdrs)
  10.   File "D:\python27\lib\urllib2.py", line 448, in error
  11.     return self._call_chain(*args)
  12.   File "D:\python27\lib\urllib2.py", line 382, in _call_chain
  13.     result = func(*args)
  14.   File "D:\python27\lib\urllib2.py", line 531, in http_error_default
  15.     raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
  16. HTTPError: HTTP Error 404: Not Found
复制代码
可是如果把编码换成utf-8的时候,输入城市以后就直接没有下文了
想知道是哪里的问题,非常困扰,望老师指教一下,万分感谢!~
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

157#
发表于 2016-11-5 22:07:33 |只看该作者
李树青 发表于 2016-11-4 22:50
老师你好!我这里是Windows7系统的。Python2.75,在把city.py编码改成cp936的时候运行,输入城市,就会报错 ...

这个报错是没有找到页面。你把请求的地址print出来看看是什么,然后复制到浏览器里访问看看行不行。有少量城市确实没法访问
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

158#
发表于 2016-11-6 15:02:08 |只看该作者
crossin先生 发表于 2016-11-5 22:07
这个报错是没有找到页面。你把请求的地址print出来看看是什么,然后复制到浏览器里访问看看行不行。有少 ...

问题已经解决,谢谢老师指点!
回复

使用道具 举报

0

主题

0

好友

35

积分

新手上路

Rank: 1

159#
发表于 2016-11-8 20:19:44 |只看该作者
先生这是怎么回事啊

# -*- coding: utf-8 -*-
from urllib2 import urlopen
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
    print url
    f = urlopen(url)
    content = f.read()
    print content




微信截图_20161108191710.png (4.24 KB, 下载次数: 368)

微信截图_20161108191710.png

微信截图_20161108191829.png (2.15 KB, 下载次数: 370)

微信截图_20161108191829.png

回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

160#
发表于 2016-11-9 14:00:39 |只看该作者
yunzhou 发表于 2016-11-8 20:19
先生这是怎么回事啊

# -*- coding: utf-8 -*-

windows下,把两个文件的编码设置都改成 gbk
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-11-22 15:00 , Processed in 0.016776 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部