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,但是请求库说它像对象一样的字节为什么呢?
答案 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。