1. 程式人生 > >處理Python2.7讀寫文件中的中文亂碼問題

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

創建 文本文件 odi 出現 print 文本 處理 ecs 報錯

1.設置默認編碼

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

#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。

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()

輸出結果:

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

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

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