web-dev-qa-db-ja.com

TypeError:バイトのようなオブジェクトでは文字列パターンを使用できません

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であることがわかりますが、リクエストライブラリはなぜオブジェクトのようなバイトを言うのですか?

25
user3249433

Python 3.xを使用する場合、strオブジェクトを json.loads

次の行を置き換えます。

print(json.loads(line))

で:

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

更新:Python 3.6で動作が変更されました。引数のタイプはバイトまたはバイト配列になりました。入力エンコーディングはUTF-8、UTF-16またはUTF-32である必要があります。

37
falsetru