python Error: Can't use string pattern on a byte-like object

如果您在python中看到了这个错误,那么说明您正在用python 3。

python 3 针对 unicode 的支持做了很多的改进,这就是其中一个特性。

遇到这个问题的时候,我正在用 python 的 urllib 库抓取一个网页,然后将返回放到 re.match 中,然后就出来这个错误了。

例如:data = urllib.urlopen('http://www.zhetenga.com').read(); re.match(r'xxx', data)。

原因是:urllib 返回的 response 是 bytes,而不是期望的 strings,直接传给 re.match 就出现了:

Error: Can't use string pattern on a byte-like object。

而解决办法是将 bytes 转为 string,再传进去,例如:re.match(r'xxx', data.decode('utf-8'))。

2014年08月07日