我试图从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"
}, ....
失败代码(示例):
^{pr2}$我在一台Windows7机器上使用它,并且有Python2.7并在命令行终端上运行这段代码。。我得到的输出如下:
C:\Python27>python junk.py Gigi DGÇÖAgostino Gigi D?Agostino Gigi D\u2019Agostino
我希望输出是Gigi D' Agostino
您应该像任何有效的json解析器一样使用返回Unicode字符串的json解析器。失败的示例显示了一个bytestring,也就是说,您没有使用json解析器。在
例如,要解析json数据:
要在不使用Unicode转义符的情况下漂亮地打印
^{pr2}$obj
,请执行以下操作:了解以下两者之间的区别也很有用:
以及:
您正在Windows中使用
cmd
?在这种情况下,让Unicode正常工作以正确显示可能有点麻烦。 您可能需要考虑使用另一个“终端”来测试脚本。 MSYS提供了一个不错的终端/shell,IDLE包含在Windows Python发行版中,并且有一个pythonshell(右键单击,在IDLE中打开,F5)。在如果您真的想让它在
cmd
中工作:您必须将
Lucida Console
设置为cmd
中的字体。然后:那么您应该在
^{pr2}$cmd
中有unicode输出。你的“活动代码页”可能不同。请注意,在某个地方,因为您可能希望在以后更改它:否则,您将遇到其他问题(启动
.bat
文件不起作用)。 (另见batch-file-encoding)在脚本中,您还需要:
否则python将崩溃。(见windows-cmd-encoding-change-causes-python-crash)
我的脚本也有类似的bug report。在
您还可以考虑使用库来访问MusicBrainzWeb服务。 Python-musicbrainzngs与当前的ws/2一起工作。在
Unicode转义仅适用于Unicode字符串,要将常规字符串转换为Unicode,请使用
str.decode('unicode-escape')
:相关问题 更多 >
编程相关推荐