&#34;需要一个类似字节的对象&#34;,但是type(var)返回<class'bytes'=“”>

时间:2018-05-04 14:12:39

标签: python python-3.x character-encoding

我必须进行一些文本处理,并且遇到编码方面的问题:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 11: invalid start byte

所以我做了:

text = text.encode('utf-8').strip()

但是后来在代码中我必须这样做:

text = text.replace(' ', '_')

这给了我以下错误:

TypeError: a bytes-like object is required, not 'str'

但此时text类型是字节。我在python shell上运行它,如下所示,在encode命令之后,结果是类bytes的对象。

enter image description here

这里到底发生了什么,我该如何解决这个问题?我正在使用Python 3.5.2

1 个答案:

答案 0 :(得分:3)

您使用什么来替换它必须是类似字节的对象。

因此,您应该使用要替换的字符的字节表示。 (试试这个)

text = text.replace(b' ', b'_')

但是,请知道这是在python 3.6中修复的,所以如果可能的话,你应该更新到这个版本。