python - 在python中从返回的JSON转换unicode字符

标签 python windows json cmd musicbrainz

我正在尝试从 musicbrainz 的 API 服务返回 JSON,一些歌曲的返回数据有 unicode 字符,我无法将它们转换为常规符号等。请告诉我我应该在这里做什么。

JSON:

{
    "status": "ok",
    "results": [{
        "recordings": [{
            "duration": 402,
            "tracks": [{
                "duration": 402,
                "position": 6,
                "medium": {
                    "release": {
                        "id": "dde6ecee-8e9b-4b46-8c28-0f8d659f83ac",
                        "title": "Tecno Fes, Volume 2"
                    },
                    "position": 1,
                    "track_count": 11
                },
                "artists": [{
                    "id": "57c1e5ea-e08f-413a-bcb1-f4e4b675bead",
                    "name": "Gigi D\u2019Agostino"
                }],
                "title": "You Spin Me Round"
            }],
            "id": "2e0a7bce-9e44-4a63-a789-e8c4d2a12af9"
        }, ....

失败的代码(示例):

string = '\u0420\u043e\u0441\u0441\u0438\u044f'
print string.encode('utf-8')

我在 Windows 7 机器上使用它并且有 python 2.7 并在命令行终端上运行这段代码..我得到下面的输出:

C:\Python27>python junk.py Gigi DGÇÖAgostino Gigi D?Agostino Gigi D\u2019Agostino

我希望输出为 Gigi D' Agostino

最佳答案

Unicode 转义仅适用于 unicode 字符串,要将您的常规字符串转换为 unicode,请使用 str.decode('unicode-escape'):

In [1]: s='\u0420\u043e\u0441\u0441\u0438\u044f'

In [2]: s
Out[2]: '\\u0420\\u043e\\u0441\\u0441\\u0438\\u044f'

In [3]: s.decode('unicode-escape')
Out[3]: u'\u0420\u043e\u0441\u0441\u0438\u044f'

In [4]: print s.decode('unicode-escape')
Россия

In [5]: s2="Gigi D\u2019Agostino"

In [6]: s2
Out[6]: 'Gigi D\\u2019Agostino'

In [7]: print s2.decode('unicode-escape')
Gigi D’Agostino

关于python - 在python中从返回的JSON转换unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345066/

相关文章:

python - 动态改变Gtk.Entry的背景颜色

java - 如何让 Java 应用程序在 PC 启动时自动启动?

windows - IIS 管理器 (IIS7) 中缺少“URL 重写”选项

python - 将外键更改为另一个模型

python - 访问 JSON 中的字段时发生 KeyError

ios - Mac 和 Windows Excel

java - Gson:从 Json 字符串实例化接口(interface)

java - 如何将 ArrayList 转换为 JSON 对象

javascript - NodeJS JSONStream 将数据作为一个长字符串返回

在 Mac OSX Lion 上使用 tempfile.mkdtemp() 时,Python 的 os.chdir() 和 os.getcwd() 不匹配