设为首页收藏本站

Crossin的编程教室

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

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

  [复制链接]

0

主题

0

好友

6

积分

新手上路

Rank: 1

111#
发表于 2016-3-17 20:31:38 |只看该作者
crossin老师好,
我用的是mac系统,在terminal用 python web.py编译出现以下问题,但是用IDLE没有问题
web.py:
# -*- coding: utf-8 -*-
import urllib2
import json
from city import city

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

报错:
Traceback (most recent call last):
  File "web.py", line 2, in <module>
    import urllib2
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1151, in <module>
    import ssl
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 58, in <module>
    import textwrap
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/textwrap.py", line 40, in <module>
    class TextWrapper:
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/textwrap.py", line 82, in TextWrapper
    whitespace_trans = string.maketrans(_whitespace, ' ' * len(_whitespace))
AttributeError: 'module' object has no attribute 'maketrans'
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

112#
发表于 2016-3-17 23:30:46 |只看该作者
bigshots 发表于 2016-3-17 20:31
crossin老师好,
我用的是mac系统,在terminal用 python web.py编译出现以下问题,但是用IDLE没有问题
web. ...

不知道啊。看上去你mac上的python好像有点混乱,感觉装了不止一个版本?

如果不好解决,那就只能用 virtualenv 创建个虚拟环境,保证里面python的版本没问题
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

10

积分

新手上路

Rank: 1

113#
发表于 2016-3-19 21:25:25 |只看该作者
分享编码解决问题
我的操作系统是win8的,代码如下,凡是输出的先解码成Unicode再编码成gb2312,输入的则是转成Unicode再编码成utf-8。
  1. # -*- coding: utf-8 -*-
  2. import urllib2
  3. from city import city


  4. cityname = raw_input('你想查哪个城市的天气\n'.decode('utf-8').encode('gb2312'))
  5. citycode = city.get(cityname.decode('gb2312').encode('utf-8'))


  6. if citycode:
  7.         url = 'http://www.weather.com.cn/data/cityinfo/%s.html'%citycode
  8.         content = urllib2.urlopen(url).read()
  9.         print content.decode('utf-8').encode('gb2312')
复制代码
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

114#
发表于 2016-3-28 14:43:35 |只看该作者
# -*- coding: cp936 -*-
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
   
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

115#
发表于 2016-3-28 14:45:22 |只看该作者
搞了一天了,就是不行,丑死了
# -*- coding: cp936 -*-
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





Traceback (most recent call last):
  File "C:/Python27/lesson47", line 5, in <module>
    from city import city
  File "C:/Python27\city.py", line 2
SyntaxError: Non-ASCII character '\xe5' in file C:/Python27\city.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

116#
发表于 2016-3-28 17:31:27 |只看该作者
212121212 发表于 2016-3-28 14:45
搞了一天了,就是不行,丑死了
# -*- coding: cp936 -*-
import urllib2

city.py 文件第一行要加上字符编码设定#coding:utf8。如果是windows,utf-8要改成cp936
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

30

积分

新手上路

Rank: 1

117#
发表于 2016-3-28 20:10:39 |只看该作者
放弃这一课了,各种报错,还有为什么要打那些#coding:utf8,进入下一课吧
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

118#
发表于 2016-3-29 13:12:04 |只看该作者
212121212 发表于 2016-3-28 20:10
放弃这一课了,各种报错,还有为什么要打那些#coding:utf8,进入下一课吧

因为代码里有中文,并且需要用这些中文来进行匹配,需要指定中文的编码格式
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

24

积分

新手上路

Rank: 1

119#
发表于 2016-4-3 04:53:08 |只看该作者
434858383 发表于 2016-3-19 21:25
分享编码解决问题
我的操作系统是win8的,代码如下,凡是输出的先解码成Unicode再编码成gb2312,输入的则是 ...

非常感谢啊,才回来来看到这个,希望crossin先生可以把你的方法在前面提及一下,这地方我真是弄了好久,多谢多谢
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

120#
发表于 2016-4-4 16:29:44 |只看该作者
fengyulaike 发表于 2016-4-3 04:53
非常感谢啊,才回来来看到这个,希望crossin先生可以把你的方法在前面提及一下,这地方我真是弄了好久, ...

恩,win的系统下需要改一下编码,刚改了下帖子,在第1课一开始加上了说明
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-18 07:52 , Processed in 0.024054 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部