【问题标题】:Reading JSON from urllib2.open and UTF8 characters从 urllib2.open 和 UTF8 字符读取 JSON
【发布时间】:2018-08-05 03:11:18
【问题描述】:

我正在阅读一个 JSON:

# coding: utf8

import urllib2
import json

response = urllib2.urlopen('https://example.com/test.json')
data = json.load(response)

print data['mykey']

# {u'readme': u'Caf\xe9'}

但我看到两件事:

  • 每个字符串都以u为前缀,即输入'unicode'

  • \xe9 而不是é

如何使用 Python 2.7 正确执行此操作?

【问题讨论】:

  • 这只是字典的表示。打印字典仅用于调试目的。你有什么问题?
  • 然后显示代码,这确实会产生一些问题(除了打印)。
  • @Basj "How do this properly with Python 2.7?" 你到底想做什么?您还没有描述为什么前缀是一个问题或为什么字符是一个问题。您说您想“在将任何内容存储在数据库中之前将数据输出到屏幕”,并且一个答案显示您可以将其打印到屏幕上,而我的答案显示了一种您可以保存完整字符的方法。问题是什么?您的实际问题是什么?
  • @DeliriousLettuce:我刚刚发现我的问题实际上是一个 XY 问题,因为我正在显示来自 SublimeText 控制台的输出。当我使用python myscript.py 从控制台显示时,它可以工作,请参阅stackoverflow.com/q/48975692/1422096

标签: python python-2.7 unicode utf-8 urllib2


【解决方案1】:

在 Python 3 中,这应该足够了:

print str(data['mykey'])

# 'Café'

【讨论】:

    【解决方案2】:
    >>> import json
    >>> d = {u'readme': u'Caf\xe9'}
    >>> json.dumps(d)
    '{"readme": "Caf\\u00e9"}'
    >>> json.dumps(d, ensure_ascii=False)
    '{"readme": "Café"}'
    

    【讨论】:

    • 实际上我是在导入数据,而不是导出:json.load(..., ensure_ascii=False) 不存在。你会怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2011-03-18
    相关资源
    最近更新 更多