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であることがわかりますが、リクエストライブラリはなぜオブジェクトのようなバイトを言うのですか?
Python 3.xを使用する場合、str
オブジェクトを json.loads
。
次の行を置き換えます。
print(json.loads(line))
で:
print(json.loads(line.decode()))
更新:Python 3.6で動作が変更されました。引数のタイプはバイトまたはバイト配列になりました。入力エンコーディングはUTF-8、UTF-16またはUTF-32である必要があります。