我在python 3.2中使用chardet 2.01,像这个网站http://getpython3.com/diveintopython3/case-study-porting-chardet-to-python-3.html
我使用lxml2来解析html以获得一些字符串
,并使用下面的代码来检测编码
chardet.detect(name)
但是发生错误
Traceback (most recent call last):
File "C:\python\test.py", line 125, in <module>
print(chardet.detect(str(name)))
File "E:\Python32\lib\site-packages\chardet\__init__.py", line 24, in detect
u.feed(aBuf)
File "E:\Python32\lib\site-packages\chardet\universaldetector.py", line 98, in feed
if self._highBitDetector.search(aBuf):
TypeError: can't use a bytes pattern on a string-like object
name
是一个字符串对象
将字符串转换为字节意味着使用'utf-8','big5'等编码对其进行编码,charset将检测您所做的编码....而不是原始字符串的编码
我不知道这个问题......
答案 0 :(得分:4)
问题很明显,你在字符串而不是字节对象上调用chardet
。您缺少的是Python,字符串已经解码。它不再拥有编码。
您必须修复代码,以便在将它们解码为字符串之前给它chardet
原始字节。如果你从另一个包中获取字符串,那么它已经确定了编码,你无能为力。