Ton problème vient du fait qu'une requête HTTP renvoit des bytes. En python 2.7 cela ne te pose pas de soucis, car lui le type byte est un alias pour les chaînes de caractères. En python 3 ce n'est plus la même chose, le type par défaut pour les chaines devient le type 'str'. Pour convertir une chaine bytes en str, tu as besoin de la fonction decode().
En faisait :
json_obj = urllib2.urlopen(url).decode()
ou bien:
data = json.load(json_obj.decode())
cela devrait fonctionner.
J'espère que je n'ai pas été trop obscur et que c'était bien la solution. Bon courage pour la suite
En fouillant un peu j'ai fini par trouver ça ce qui est presque ce que tu disais, en rajoutant juste .read(). Et un peu plus de documentation ici en faisant une recherche du mot "decode", mais euh, ce truc est franchement pas clair...
Premièrement, il n'y a pas de réelle distinction entre variable et fonction en python. Ce que tu appelles variable est en fait un label (un nom) posé sur un objet, une fonction l'est aussi.
Ici, reader contient un callable, c'est à dire un objet appelable, à l'instar d'une fonction.
Pas exactement. En fait, reader prend un fileobject en paramètre, et retourne un nouveau fileobject, on appelle ça un wrapper.
Cela permet de transformer à la volée le contenu de ce qui est donnée en paramètre au reader: c'est à dire décoder les bytes vers une chaîne de caractères. L'encodage de la chaîne est déduit des headers HTTP à l'aide de la méthode get_content_charset.
Merci pour les infos! Encodages et lectures de fichiers m'ont l'air d'être des sujets frustrants
urllib et json
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique