【问题标题】:python encoding json with 'æøå'python用'æøå'编码json
【发布时间】:2014-05-27 14:35:23
【问题描述】:

我试图从 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'

【问题讨论】:

  • 错误是什么?键错误?你的python版本是什么?
  • 我已将错误包含在内,谢谢。

标签: python json urlopen


【解决方案1】:

您的解码数据包含 Unicode 字符串,因此您需要使用 Unicode 字符串进行查找:

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

(您可能会发现它适用于仅包含非重音字符的字符串,无论您是否使用 Unicode 字符串,因为 Unicode 和您的默认编码之间的自动转换,但这不适用于重音字符。)

【讨论】:

  • 您能否详细说明一下。我一直在尝试解码然后编码字符。但我还是个新手。如果您能指导我举一些例子,那将对我有很大帮助。感谢您的时间和指导。
  • @PhilipHoyos:这是对 Python 2 中 Unicode 的一个很好的解释:diveintopython.net/xml_processing/unicode.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
相关资源
最近更新 更多