Question

im essayant de récupérer des coordonnées d'une API, mais l'un des objets JSON contient des lettres danoises et je continue à obtenir une erreur.C'est ce que j'ai:

# -*- coding: utf-8 -*-
import urllib2
import json
import codecs

url='http://geo.oiorest.dk/adresser.json?postnr=1577&vejnavn=bernstorffsgade&husnr=16'

addressline = "%s, %s"

try:
    data = urllib2.urlopen(url).read().decode('utf-8')
    adresser = json.loads(data, encoding='utf-8')

    for adresse in adresser:
        print addressline % \
            (adresse['etrs89koordinat']['øst'],
             adresse['etrs89koordinat']['nord'])

except urllib2.HTTPError, e:
    print "HTTP error: %d" % e.code
except urllib2.URLError, e:
    print "Network error: %s" % e.reason.args[1]

L'erreur que je reçois:

KeyError: '\xc3\xb8st'

Était-ce utile?

La solution

Vos données décodées contiennent des chaînes Unicode, vous devez donc regarder les choses à l'aide de chaînes UNICODE:

print addressline % \
    (adresse[u'etrs89koordinat'][u'øst'],
     adresse[u'etrs89koordinat'][u'nord'])

(Vous trouverez peut-être que cela fonctionne pour les chaînes qui ne contiennent que des caractères non accentués, que vous utilisiez des chaînes UNICODE ou non, en raison de la conversion automatique entre Unicode et votre codage par défaut, mais cela ne fonctionnera pas pour les caractères accentués.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top