Python кодирует JSON с 'æøå'
Вопрос
Я пытаюсь получить координаты из API, но один из объектов JSON содержит датские буквы, и я продолжаю получать ошибку.Это то, что у меня есть:
# -*- 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]
.
ошибка, которую я получаю:
KeyError: '\xc3\xb8st'
. Решение
Ваши декодированные данные содержит строки Unicode, поэтому вам нужно выглядеть так, используя строки Unicode:
print addressline % \
(adresse[u'etrs89koordinat'][u'øst'],
adresse[u'etrs89koordinat'][u'nord'])
.
(Возможно, вы обнаружите, что он работает для строк, которые содержат только неприкосрочные символы, используете ли вы строки Unicode или нет, из-за автоматического преобразования между Unicode и вашим кодировкой по умолчанию, но это не будет работать для акцентных символов.)
Не связан с StackOverflow