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))
Donne cette erreur:
TypeError: can't use a string pattern on a bytes-like object
Lors de la visualisation via le navigateur, je vois que la réponse est un Json mais la bibliothèque de requêtes dit que c'est un objet comme des octets, pourquoi?
Si vous utilisez Python 3.x, vous devez passer l'objet str
à json.loads
.
Remplacez la ligne suivante:
print(json.loads(line))
avec:
print(json.loads(line.decode()))
MISE À JOUR: Le comportement a changé dans Python 3.6. L'argument peut maintenant être de type octets ou bytearray. Le codage d'entrée doit être UTF-8, UTF-16 ou UTF-32.