解決Python2.7讀寫文件中的中文亂碼問題
Python2.7對于中文編碼的問題處理的并不好,這幾天在爬數(shù)據(jù)的時候經(jīng)常會遇到中文的編碼問題。但是本人對編碼原理不了解,也沒時間深究其中的原理。在此僅從應(yīng)用的角度做一下總結(jié),
1.設(shè)置默認(rèn)編碼
在Python代碼中的任何地方出現(xiàn)中文,編譯時都會報錯,這時可以在代碼的首行添加相應(yīng)說明,明確utf-8編碼格式,可以解決一般情況下的中文報錯。當(dāng)然,編程中遇到具體問題還需具體分析啦。
#encoding:utf-8
或者
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8') # 設(shè)置默認(rèn)編碼格式為'utf-8'
2.文件讀寫
文件讀寫中遇到中文,通常不會報錯,但是最后運(yùn)行結(jié)果顯示亂碼,給后續(xù)處理帶來不便。
2.1 讀文件
讀文件時,如果文件路徑、文件名中有中文,需要使用unicode函數(shù)將其編碼為'utf-8'格式,然后再進(jìn)行正常的文件讀取。以我常用的pandas的read_csv函數(shù)為例,使用如下代碼可以成功地讀取名為“POI總表”的csv文件,保存在DataFrame數(shù)據(jù)類型的poi_list。
import pandas as pd inpath = 'C:\\POI總表.csv' **path = unicode(inpath, 'utf-8')** poi_list = pd.read_csv(path)
2.2 寫文件
文件名有中文,文件名亂碼
當(dāng)想要將程序運(yùn)行結(jié)果保存到文本文件時,文本文件的命名中如果有中文,不做處理文件名會出現(xiàn)亂碼。利用unicode函數(shù)進(jìn)行編碼可解。unicode(‘中文.csv','utf-8')
文件內(nèi)容有中文,excel打開內(nèi)容亂碼
如果將包含中文的結(jié)果輸出到csv文件,一般默認(rèn)使用Excel打開文件時,文件內(nèi)容會出現(xiàn)亂碼,而使用文本編輯器打開不會亂碼。這是因為Excel默認(rèn)的編碼方式為‘GBK‘,而文本編輯器默認(rèn)的格式為‘utf-8'。使用codecs包在創(chuàng)建文件后添加語句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打開內(nèi)容不亂碼的核心語句**
f.write('123,語文')
f.close()
輸出結(jié)果:
#文件名:璇枃.csv #Excel打開 123 璇枃 #文本編輯器打開 123,語文 #改編碼后 #文件名:語文.csv #Excel打開 123 語文 #文本編輯器打開 123,語文
以上這篇解決Python2.7讀寫文件中的中文亂碼問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python?open讀取文件內(nèi)容時的mode模式解析
這篇文章主要介紹了python?open讀取文件內(nèi)容時的mode模式解析,Python可以使用open函數(shù)來實(shí)現(xiàn)文件的打開,關(guān)閉,讀寫操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Python實(shí)現(xiàn)Linux系統(tǒng)上CI/CD工作流的方法詳解
在現(xiàn)代軟件開發(fā)中,持續(xù)集成(CI)和持續(xù)部署(CD)是提高開發(fā)效率、保證代碼質(zhì)量的重要手段,下面我們來看看如何使用Python實(shí)現(xiàn)Linux系統(tǒng)的CI/CD工作流吧2025-04-04
Pandas對每個分組應(yīng)用apply函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了Pandas對每個分組應(yīng)用apply函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python閉包執(zhí)行時值的傳遞方式實(shí)例分析
這篇文章主要介紹了Python閉包執(zhí)行時值的傳遞方式,結(jié)合實(shí)例形式分析了Python閉包執(zhí)行時的傳值原理與實(shí)現(xiàn)方式,代碼中包含了較為詳盡的注釋便于理解,需要的朋友可以參考下2018-06-06
基于Python實(shí)現(xiàn)四維圖像繪制系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Python語言實(shí)現(xiàn)一個簡單的四維圖像繪制系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-09-09
Python統(tǒng)計一個字符串中每個字符出現(xiàn)了多少次的方法【字符串轉(zhuǎn)換為列表再統(tǒng)計】
這篇文章主要介紹了Python統(tǒng)計一個字符串中每個字符出現(xiàn)了多少次的方法,涉及Python字符串轉(zhuǎn)換及列表遍歷、統(tǒng)計等相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
Pytorch backward報錯2次訪問計算圖需要retain_graph=True的情況詳解
這篇文章主要介紹了Pytorch backward報錯2次訪問計算圖需要retain_graph=True的情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型
這篇文章主要介紹了基于python實(shí)現(xiàn)模擬數(shù)據(jù)結(jié)構(gòu)模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06

