使用chardet检测编码触发TypeError,按教程编写代码仍报错求助
解决chardet.detect()的TypeError问题
嘿,这问题我之前踩过坑!咱们来快速搞定它:
错误原因
你碰到的TypeError: Expected object of type bytes or bytearray, got: <class 'str'>,核心问题很简单——chardet的detect()方法只认字节类型(bytes/bytearray)的数据,但你传入的是普通字符串(str类型),类型不匹配自然就报错了。
修正方案
只需要把字符串转换成字节类型就行,有两种超简单的方式:
方式1:直接定义字节字符串
在字符串前面加b前缀,让它直接变成bytes类型:
import chardet a = b'haha' print(chardet.detect(a))
方式2:用encode()方法转换
如果你的字符串是动态生成的,用str.encode()方法把它转成字节(默认用utf-8编码,也可以指定其他编码):
import chardet a = 'haha'.encode('utf-8') print(chardet.detect(a))
为啥教程里没问题?
大概率是教程里的示例是从文件读取的内容(比如用open('file.txt', 'rb')模式读取,得到的就是字节),或者默认用了字节字符串,你没注意到这个细节~
内容的提问来源于stack exchange,提问作者kovac
相关产品推荐
相关产品推荐

