【发布时间】:2012-09-10 14:22:42
【问题描述】:
我在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 会检测您所做的编码......而不是原始字符串的编码
我不知道这个问题...
【问题讨论】:
-
你为什么在不知道编码的情况下打电话给
str()? -
您的
name对象中有什么?它不应该是b'something'而应该只是'something'- 一个字符串。 -
是的,'name' 是一个字符串对象。但是,如果我将其转换为字节,我必须对其进行编码......导致 chardet.detect 变得无用
-
@eternalblaze:Python 3
str没有编码;它是一个 unicode 字符序列。只讨论bytes对象使用的编码是有意义的。 -
我只是想让大家明白我要检测字符串对象...
标签: python encoding python-3.x chardet