Python27中Json對中文的處理

應用場景以下:從api下載數據,json解析,存入字典,按期保存。重啓程序須要加載保存的文本。python

問題1:json中都是unicode串,存到文本里都是些\u***json

解決:關閉ensure_ascii開關api

json.dump(pub.listData,fp,ensure_ascii=False)編碼

 

問題2:字典關鍵字用的數字,從文本load後變爲unicode串excel

解決:code

走了一點彎路,網上的解決方法,都是轉換,把串轉回utf-8,方法是utf-8

def byteify(input):ci

    if isinstance(input, dict):element

        return {byteify(key):byteify(value) for key,value in input.iteritems()}unicode

    elif isinstance(input, list):

        return [byteify(element) for element in input]

    elif isinstance(input, unicode):

        return input.encode('utf-8')

    else:

        return input

 

但發現,json相關的都是unicode,轉不勝轉。

最後解決方法,仍是用unicode存,可是load後,加一個處理,把key轉換爲數值就行

 

pub.listData=json.load(fp)
     pub.listData={int(k):v for k,v in pub.listData.items()}

 

問題3:編碼問題

解決:

    默認狀況下,用sys.getdefaultencoding()查看是utf-8

    decode(code):把code轉換爲unicode

    encode(code):把unicode轉換爲code

  若是對一個非unicode格式的串,調用encode的話,則會用默認編碼轉化爲unicode,再進行encode。系統默認編碼爲ascii,因此經常出錯

設置默認編碼:

在python的Lib\site-packages文件夾下新建一個sitecustomize.py,內容爲:

# encoding=utf8 

import sys 

reload(sys) 

sys.setdefaultencoding('utf8')

 

問題4:讀入unicode的中文的處理

好比csv文件,excel正常,python讀入數據相似:

[18]:'\xc2\xf2\xd2\xbb\xc1\xbf'

直接輸出爲亂碼,須要解碼再編碼:

print df.columns[0].decode("gbk").encode('utf-8')

市場代碼

相關文章
相關標籤/搜索