为什么这段代码会继续抛出此错误? TypeError:不能在类字节对象上使用字符串模式

时间:2016-11-19 19:33:21

标签: python

我的代码抛出了这个错误:

defs = LI_re.findall(text)
TypeError: cannot use a string pattern on a bytes-like object    

所以这是我用来从字典网站清理一段提取信息的代码。

任何帮助都将不胜感激。

clean_defs = []
LI_re = re.compile(r'<LI>(.*)</LI>') 
HTML_re = re.compile(r'<[^>]+>\s*')
defs = LI_re.findall(text) # THE ERROR HAPPENS HERE
# remove internal tags                                                                                      
for d in defs:
    clean_d = HTML_re.sub('',d)
    if clean_d: clean_defs.append(clean_d)

return clean_defs #My return from the function or whatever

1 个答案:

答案 0 :(得分:0)

text显然是一个字节对象。有几种解决方案。您可以将text更改为字符串:

text = text.decode()

这将给出字符串(str)结果。

或者更改正则表达式以使用字节对象:

LI_re = re.compile(br'<LI>(.*)</LI>')
HTML_re = re.compile(br'<[^>]+>\s*')

这将给出字节对象结果。