繁体   English   中英

UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xa0:序数不在范围内(128)

[英]UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

我正在为正在执行的项目抓取俄勒冈州教师许可数据 这是我的代码:

educ_employ = tree.xpath('//tr[15]//td[@bgcolor="#A9EDFC"]//text()')
print educ_employ
#[u'Jefferson Middle School\xa0\xa0(2013 - 2014)']

我要剥离“ \\ xa0”。 这是我的代码:

educ_employ = ([s.strip('\xa0') for s in educ_employ])
print educ_employ
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

我尝试了这个

educ_employ = ([s.decode('utf-8').strip('\xa0') for s in educ_employ])
print educ_employ
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)

import sys

reload(sys)
sys.setdefaultencoding('utf-8')

educ_employ = tree.xpath('//tr[15]//td[@bgcolor="#A9EDFC"]//text()')
educ_employ = ([s.decode('utf-8').strip('\xa0') for s in educ_employ])
print educ_employ
>>>

我没有遇到最后一个错误,但是也没有得到输出。 我正在使用Python 2.7。 有谁知道如何解决这一问题?

您正在混合unicode对象和str对象。 educ_employunicode ,但是'\\xa0'str

此外, .strip()仅从字符串的开头和结尾删除字符,而不从中间删除字符。 尝试使用.replace()代替。

尝试:

educ_employ = [u'Jefferson Middle School\xa0\xa0(2013 - 2014)']
educ_employ = [s.replace(u'\xa0', u'') for s in educ_employ]
print educ_employ

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM