Skip to main content
 首页 » 编程设计

" rel="bookmark">python之"a bytes-like object is required",但 type(var) 返回 class 'bytes' >

2024年08月16日28zhoujg

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

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 类的对象。

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

请您参考如下方法:

你用来替换它的必须是一个类似字节的对象。

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

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

但是,请注意这在 python 3.6 中已修复,因此您可能应该尽可能更新到此版本。