2


我在python 3.2中使用chardet 2.01,源代码像这个网站http://getpython3.com/diveintopython3/case-study-porting-chardet-to-python-3.html

可以在这里下载
http://jaist.dl.sourceforge.net/project/cygwin-ports/release-2/Python/python3-chardet/python3-chardet-2.0.1-2.tar.bz2

我使用 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会检测你所做的编码......不是原始字符串的编码
我不知道这个问题...

4

1 回答 1

4

问题很明显,您调用chardet的是字符串而不是字节对象。您缺少的是对于 Python,一个字符串已经被解码。它不再编码。

您必须修复您的代码,以便在chardet将原始字节解码为字符串之前提供原始字节。如果您从另一个包中获取字符串,那么它已经确定了编码,您无能为力。

于 2012-09-10T15:11:49.327 回答