解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
2017-04-09 22:08
381 查看
今天在看中国大学MOOC好大学在线中Python网络爬虫与信息提取课程的时候,做了一个实例是关于中国大学排名定向爬虫,我贴一下代码:
但是我在最后在运行的时候出现了
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 1-4: ordinal not in range(128)
找了一下原因,因为Python调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128)),但是很神奇的是python3.x是不会出现这个问题的,好吧,说好的python更加稳定呢?
那就找解决方法吧!
解决的方案很简单,修改默认的编码模式,我们可以通过sys.setdefaultencoding(‘utf-8’)来将当前的字符处理模式修改为utf-8编码模式,值得注意的是,如果单纯这么调用的话,Python会抛出一个AttributeError异常:需要调用一次reload(sys)。
然后,就ok了。
这位大神的解决方案
#encoding:utf-8 import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): r = requests.get(url,timeout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text def fillUnivList(ulist,html): soup = BeautifulSoup(html,"html.parser") for tr in soup.find('tbody').children: if isinstance(tr,bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string,tds[1].string,tds[2].string]) def printUnivList(ulist,num): print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分")) for i in range(num): u=ulist[i] print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2])) def main(): uinfo =[] url ='http://www.zuihaodaxue.com/zuihaodaxuepaiming2017.html' html = getHTMLText(url) fillUnivList(uinfo,html) printUnivList(uinfo,20) main()
但是我在最后在运行的时候出现了
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 1-4: ordinal not in range(128)
找了一下原因,因为Python调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128)),但是很神奇的是python3.x是不会出现这个问题的,好吧,说好的python更加稳定呢?
那就找解决方法吧!
解决的方案很简单,修改默认的编码模式,我们可以通过sys.setdefaultencoding(‘utf-8’)来将当前的字符处理模式修改为utf-8编码模式,值得注意的是,如果单纯这么调用的话,Python会抛出一个AttributeError异常:需要调用一次reload(sys)。
import sys reload(sys) sys.setdefaultencoding('utf-8')
然后,就ok了。
这位大神的解决方案
相关文章推荐
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode问题解决
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii‘codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: 'ascii' codec can't encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- python2.7出现[UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11]的解决
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 题目:解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
- 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误