关于python:Python2.7 UnicodeEncodeError:’ascii’编解码器不能编码0-11位的字符:序号不在范围内(128)

Python2.7 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)

我目前正在使用python 2.7,并在一个中文网站上进行Web抓取。

如何将下面的Unicode转换为字符串?

simple str()函数不起作用,状态为unicodeencodeerror:"ascii"编解码器无法对位置0-11中的字符进行编码:序号不在范围内(128)

事先谢谢,

1
2
3
    u'
\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3
'


您的字符串已被编码,因此它应该是字节对象而不是Unicode对象。试着解决这个问题。也就是说,你所搜集的数据中的repr应该是这样的:

1
2
3
'
\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3
'

不是这样的:

1
2
3
u'
\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3
'

要从Unicode对象恢复中文文本,可以跳到字节并返回:

1
2
3
4
5
6
>>> text = u'
\xe4\xb8\xad\xe5\x9b\xbd\xe6\xb7\xb1\xe5\x9c\xb3
'

>>> print text.encode('latin-1').decode('utf-8')

中国深圳