Pregunta

Estoy tratando de recuperar las coordenadas de una API, pero uno de los objetos JSON contiene letras danés, y sigo recibiendo un error.Esto es lo que tengo:

# -*- 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]

El error que recibo:

KeyError: '\xc3\xb8st'

¿Fue útil?

Solución

Sus datos decodificados contienen cadenas de Unicode, por lo que debe mirar las cosas usando las cadenas de Unicode:

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

(puede encontrar que funciona para cadenas que solo contienen caracteres no acentos, ya sea que use cadenas de Unicode o no, debido a la conversión automática entre Unicode y su codificación predeterminada, pero eso no funcionará para caracteres acentuados).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top