首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python2.7.13 UnicodeEncodeError和特殊字符

Python2.7.13 UnicodeEncodeError和特殊字符
EN

Stack Overflow用户
提问于 2017-08-05 12:25:37
回答 1查看 186关注 0票数 0

我正在编写一个简单的python程序,它从网站中检索信息,问题是有些单词包含特殊的字符,如"°“、"Ψ”等等。

这是我的代码:

代码语言:javascript
运行
复制
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib
r = urllib.urlopen('http://www.samplepage.sample').read()
soup = BeautifulSoup(r, "lxml")
text = soup.find_all("a", class_="some_class")
for word in text:
    word = word.get_text()
    word = word.encode('utf-8')
    print word

输出应该是"°",但不是“°”,而是“°”

如果我尝试用ascii对其进行编码,就会得到经典的UnicodeEncodeError:

代码语言:javascript
运行
复制
for word in text:
    word = word.get_text()
    word = word.encode('ascii')
    print word

>>> UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: 
ordinal not in range(128)

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-05 12:52:09

这可能是因为您使用错误的编解码器对字符串进行解码。

尝试打印字符串,在使用utf-8 first 对其进行编码之前,您需要使用正确的编解码器对字符串进行解码。然后,您将得到一个Unicode对象,您可以打印它,并且应该正确地显示它。

如果它是ascii映射之外的一个特殊字符,则需要Unicode对象来正确地显示它。

尝试执行以下操作:

代码语言:javascript
运行
复制
new_word = word.decode('latin-1')
print new_code
word = word.encode('utf-8')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45521872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档