處理Python2.7讀寫文件中的中文亂碼問題

1.設置默認編碼

在Python代碼中的任何地方出現中文,編譯時都會報錯,這時能夠在代碼的首行添加相應說明,明確utf-8編碼格式,能夠解決通常狀況下的中文報錯。固然,編程中遇到具體問題還需具體分析啦。python

#encoding:utf-8 或者 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding(’utf8’) # 設置默認編碼格式爲'utf-8'

2.文件讀寫

文件讀寫中遇到中文,一般不會報錯,可是最後運行結果顯示亂碼,給後續處理帶來不便。編程

2.1 讀文件

讀文件時,若是文件路徑、文件名中有中文,須要使用unicode函數將其編碼爲’utf-8’格式,而後再進行正常的文件讀取。以我經常使用的pandas的read_csv函數爲例,使用以下代碼能夠成功地讀取名爲「POI總表」的csv文件,保存在DataFrame數據類型的poi_list。json

import pandas as pd inpath = 'C:\\POI總表.csv' **path = unicode(inpath, 'utf-8')** poi_list = pd.read_csv(path)

2.2 寫文件

  1. 文件名有中文,文件名亂碼 
    當想要將程序運行結果保存到文本文件時,文本文件的命名中若是有中文,不作處理文件名會出現亂碼。利用unicode函數進行編碼可解。unicode(‘中文.csv’,’utf-8’)編輯器

  2. 文件內容有中文,excel打開內容亂碼 
    若是將包含中文的結果輸出到csv文件,通常默認使用Excel打開文件時,文件內容會出現亂碼,而使用文本編輯器打開不會亂碼。這是由於Excel默認的編碼方式爲‘GBK‘,而文本編輯器默認的格式爲‘utf-8’。使用codecs包在建立文件後添加語句f.write(codecs.BOM_UTF8)可解函數

name='語文' f = open(name+'.csv','w') f.write('123,語文') f.close() #修改編碼 import codecs f = open(**unicode(name+'.csv','utf-8')**,'w') # 文件名不亂碼 **f.write(codecs.BOM_UTF8) # excel打開內容不亂碼的核心語句** f.write('123,語文') f.close()

輸出結果:ui

#文件名:璇枃.csv #Excel打開 123 璇枃 #文本編輯器打開 123,語文 #改編碼後 #文件名:語文.csv #Excel打開 123 語文 #文本編輯器打開 123,語文


列表打印時,展現unicode,轉換成中文顯示方法:

打印時:
print custs

[u'1', u'\u534e\u4fa8\u57ce\u5317\u65b9\u6295\u8d44\u6709\u9650\u516c\u53f8', u'9cff34f0-09c0-4c83-a8e3-ba4bee5293f1', u'-', u'1.0.1905.900', u'\u8be6\u60c5\n\u7f16\u8f91\n\u5220\u9664', u'2', u'\u6df1\u5733\u534e\u4fa8\u57ce\u57ce\u5e02\u66f4\u65b0\u6295\u8d44\u6709\u9650\u516c\u53f8', u'f533411b-c60b-4500-a4e8-9eacae279332', u'-', u'1.0.1904.800', u'\u8be6\u60c5\n\u7f16\u8f91\n\u5220\u9664']編碼

 

經過json.dumps方法,能夠轉換spa

print json.dumps(custs,encoding='UTF-8', ensure_ascii=False)

["1", "華僑城北方投資有限公司", "9cff34f0-09c0-4c83-a8e3-ba4bee5293f1", "-", "1.0.1905.900", "詳情\n編輯\n刪除", "2", "深圳華僑城城市更新投資有限公司", "f533411b-c60b-4500-a4e8-9eacae279332", "-", "1.0.1904.800", "詳情\n編輯\n刪除"]
['9cff34f0-09c0-4c83-a8e3-ba4bee5293f1', 'f533411b-c60b-4500-a4e8-9eacae279332']excel

相關文章
相關標籤/搜索