用python裡的json.dumps轉換編碼
阿新 • • 發佈:2019-02-10
python編碼問題真的是煩躁,每次我匯入檔案,比如csv,txt時,用print想看一下,只要是list,dict之類的,中文就會被轉碼顯示,然後就會出現'\xe4\xb8\xad\xe6\x96\x87'這樣的值,而json.dumps就顯得十分好用了,當然了,這只是檢視內容時使用就好了
下面給出程式碼
#coding:utf-8 import json list=['中文','english'] for s in list: print s,type(s) print list,type(list) print json.dumps(list,encoding='utf-8',ensure_ascii=False),type(json.dumps(list,encoding='utf-8',ensure_ascii=False))
print json.dumps(list,encoding='utf-8')
print json.dumps(list,ensure_ascii=False)
結果:
中文 <type 'str'> english <type 'str'> ['\xe4\xb8\xad\xe6\x96\x87', 'english'] <type 'list'> ["中文", "english"] <type 'str'> ["\u4e2d\u6587", "english"] ["中文", "english"]
print 輸出s,s是一個str型別,顯示的是中文
print list,list是一個list型別,顯示的是unicode欄位。
而使用了json.dumps加兩個引數,則成功輸出我們要的中文欄位。
而裡面的引數含義:第一個是傳入函式的值,第二個是他的編碼方式是什麼,第三個則是不顯示為ascii碼值。
只賦值單一引數,能清楚的看出:
使用encoding引數能將unicode轉變為其他編碼,
使用ensure_ascii引數能夠把ascii值轉為自然語言.
雖然我這個例子中encoding引數用處不大,但實際操作下,我們一定要用第二個引數,編碼方式也許是"GBK","utf-8“,"unicode",這都是有可能的。