簡體   English   中英

當python加載json時,如何將str轉換為unicode,以便打印漢字?

[英]when python loads json,how to convert str to unicode ,so I can print Chinese characters?

我有一個這樣的json文件:

{
    'errNum': 0,    
    'retData': {
    'city': "武漢"
    }
}

import json 
content = json.loads(result) # supposing json file named result
cityname = content['retData']['city'] 
print cityname

之后,我得到一個輸出: \武\漢我知道它是武漢漢字的unicode,但它的類型是str isinstance(cityname,str) is True。 那么如何將此 str 轉換為 unicode 並且輸出將是武漢

我也嘗試過這些解決方案:

>>> u'\u6b66\u6c49'
u'\u6b66\u6c49'
>>> print u'\u6b66\u6c49'
武漢
>>> print '\u6b66\u6c49'.decode()
\u6b66\u6c49
>>> print '\u6b66\u6c49'
\u6b66\u6c49

搜索了一些關於ascii,unicode和utf-8的東西,編碼和解碼,但也看不懂,太瘋狂了! 我需要一些幫助,謝謝!

也許這個答案來得太晚了五年,但由於我在構建日語預處理器時遇到了類似的問題,因此我找到了答案。

當您loads result loadscontent添加以下標志:

content = json.loads(result, ensure_ascii=False)

這解決了我的問題。

您的 json 包含轉義的 unicode 字符。 您可以使用unicode_escape編解碼器將它們解碼為實際的 unicode 字符:

print cityname.decode('unicode_escape')

請注意,雖然這通常會起作用,但根據 unicode 轉義的來源,您可能會遇到基本多語言平面(U+0 到 U+FFFF)之外的字符問題。 我從用戶@bobince 的評論中引用了一段方便的話:

請注意……有許多不同的格式使用 \\u 轉義 - Python unicode 文字(unicode-escape 處理的)、Java 屬性、JavaScript 字符串文字、JSON 等等。 重要的是要知道您正在處理哪個轉義,因為它們對於其他哪些轉義是有效的都有略微不同的規則。 unicode-escape 可能是也可能不是解析該數據的有效方式,具體取決於它的來源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM