在试图解析tereo毛利语中的单词时出现了这个错误
pāngarau-我假设是马克龙
UnicodeEncodeError:“ascii”编解码器无法编码字符u'\u0101'
有什么办法解决这个问题吗?在
from lxml import html
import requests
page = requests.get('http://www.nzqa.govt.nz/qualifications-standards/qualifications/ncea/subjects/')
tree = html.fromstring(page.text)
text = tree.xpath('//*[@id="mainPage"]/table[1]/tbody/tr[1]/td[3]/a')
print text[0].text
回溯(最近一次呼叫):
^{pr2}$
在Python2中,lxml有时在检查元素的}s, and sometimes ^{} 。在
text
属性时returns ^{当文本完全由ascii字符组成时,它返回
str
,否则返回unicode
。在在错误发生的地方,
text[0].text
是一个unicode
,包含字符u'\u0101'
。在要修复此错误,请在打印之前将
unicode
显式编码为字节字符串:注意,
utf-8
只是众多encodings you could use中的一个。在通常,如果要打印到终端,Python将检测终端使用的编码,并使用该编码对
unicode
进行编码,从而将字节打印到终端。在既然你得到了错误
^{pr2}$您可能正在打印到文件,或者Python无法确定输出设备的编码。由于输出设备只接受字节(从不接受unicode),所以必须对所有unicode进行编码。在这种情况下,Python2会自动尝试使用
ascii
编解码器对unicode
进行编码。因此出现了错误。在另请参见:PrintFails wiki page
这可能是因为除非明确提到,否则Python2默认只支持ASCII字符串。要使用Unicode而不是ASCII,可以在脚本的第一行添加以下行:
# -*- coding: utf-8 -*-
相关问题 更多 >
编程相关推荐