2016-03-11 62 views
0

我有代碼。在json中解碼unicode

# -*- coding: utf8 -*- 
import re, json 
from pprint import pprint 

jsonStr = '{"type":"\u041f\u0435\u043d\u0438","values":{"v1":"222"}}' 
data = json.loads(jsonStr) 
pprint(data) 

輸出

{u'type': u'\u041f\u0435\u043d\u0438', u'values': {u'v1': u'222'}} 

如何獲得在 '類型' 正常數據?

感謝所有, 在控制檯輸出美麗

jsonStr = '{"type":"\u041f\u0435\u043d\u0438","values":{"v1":"222"}}' 
data = json.loads(jsonStr.decode("utf-8")) 
print json.dumps(data, sort_keys=True, indent=2).decode("unicode_escape") 

輸出

{ 
"type": "Пени", 
"values": { 
    "v1": "222" 
    } 
} 

回答

2

正常的數據:

>>> import json 
>>> jsonStr = '{"type":"\u041f\u0435\u043d\u0438","values":{"v1":"222"}}' 
>>> data = json.loads(jsonStr) 
>>> print data['type'] 
Пени 

的Python詞典和列表等容器使用repr()函數顯示其內容;您正在查看調試器友好輸出,這是ASCII安全的。爲了使ASCII碼安全,任何非ASCII和不可打印的代碼點都顯示爲轉義序列,因此您可以將該輸出複製到Python解釋器並安全地重新創建該值,而無需擔心編解碼器。

只需使用正常情況下的數據即可。我打印了字符串,以便Python可以將其編碼到我的終端編解碼器,並且我的終端將其解碼並顯示俄文文本(西里爾文字符)。