TypeError:不能在类字节对象上使用字符串模式

时间:2014-01-29 15:59:11

标签: python json string python-3.x bytestring

import json
import requests

url = 'http://developer.usa.gov/1usagov.json'
r = requests.get(url, stream=True)

for line in r.iter_lines():
    if line:
        print (json.loads(line))

给出了这个错误:

TypeError: can't use a string pattern on a bytes-like object

通过浏览器查看时,我确实看到响应是一个Json,但是请求库说它像对象一样的字节为什么呢?

1 个答案:

答案 0 :(得分:37)

如果您使用Python 3.x,则应将str对象传递给json.loads

替换以下行:

print(json.loads(line))

使用:

print(json.loads(line.decode()))

更新:Python 3.6中的行为已更改。参数现在可以是bytes或bytearray类型。输入编码应为UTF-8,UTF-16或UTF-32。