解決Python2.7讀寫文件中的中文亂碼問題
Python2.7對(duì)于中文編碼的問題處理的并不好,這幾天在爬數(shù)據(jù)的時(shí)候經(jīng)常會(huì)遇到中文的編碼問題。但是本人對(duì)編碼原理不了解,也沒時(shí)間深究其中的原理。在此僅從應(yīng)用的角度做一下總結(jié),
1.設(shè)置默認(rèn)編碼
在Python代碼中的任何地方出現(xiàn)中文,編譯時(shí)都會(huì)報(bào)錯(cuò),這時(shí)可以在代碼的首行添加相應(yīng)說明,明確utf-8編碼格式,可以解決一般情況下的中文報(bào)錯(cuò)。當(dāng)然,編程中遇到具體問題還需具體分析啦。
#encoding:utf-8 或者 # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') # 設(shè)置默認(rèn)編碼格式為'utf-8'
2.文件讀寫
文件讀寫中遇到中文,通常不會(huì)報(bào)錯(cuò),但是最后運(yùn)行結(jié)果顯示亂碼,給后續(xù)處理帶來不便。
2.1 讀文件
讀文件時(shí),如果文件路徑、文件名中有中文,需要使用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é)果保存到文本文件時(shí),文本文件的命名中如果有中文,不做處理文件名會(huì)出現(xiàn)亂碼。利用unicode函數(shù)進(jìn)行編碼可解。unicode(‘中文.csv','utf-8')
文件內(nèi)容有中文,excel打開內(nèi)容亂碼
如果將包含中文的結(jié)果輸出到csv文件,一般默認(rèn)使用Excel打開文件時(shí),文件內(nèi)容會(huì)出現(xiàn)亂碼,而使用文本編輯器打開不會(huì)亂碼。這是因?yàn)镋xcel默認(rèn)的編碼方式為‘GBK‘,而文本編輯器默認(rèn)的格式為‘utf-8'。使用codecs包在創(chuàng)建文件后添加語(yǔ)句f.write(codecs.BOM_UTF8)可解
name='語(yǔ)文' f = open(name+'.csv','w') f.write('123,語(yǔ)文') f.close() #修改編碼 import codecs f = open(**unicode(name+'.csv','utf-8')**,'w') # 文件名不亂碼 **f.write(codecs.BOM_UTF8) # excel打開內(nèi)容不亂碼的核心語(yǔ)句** f.write('123,語(yǔ)文') f.close()
輸出結(jié)果:
#文件名:璇枃.csv #Excel打開 123 璇枃 #文本編輯器打開 123,語(yǔ)文 #改編碼后 #文件名:語(yǔ)文.csv #Excel打開 123 語(yǔ)文 #文本編輯器打開 123,語(yǔ)文
以上這篇解決Python2.7讀寫文件中的中文亂碼問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python命令行運(yùn)行報(bào)錯(cuò)ModuleNotFoundError:No module named‘X
這篇文章主要介紹了python命令行運(yùn)行報(bào)錯(cuò)ModuleNotFoundError:No module named‘XXX‘找不到自定義模塊問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Python處理Excel表中單元格帶有換行的數(shù)據(jù)問題
這篇文章主要介紹了Python處理Excel表中單元格帶有換行的數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python中的錯(cuò)誤和異常處理簡(jiǎn)單操作示例【try-except用法】
這篇文章主要介紹了Python中的錯(cuò)誤和異常處理簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了Python中try except在錯(cuò)誤與異常處理中的用法,需要的朋友可以參考下2017-07-07python如何獲取apk的packagename和activity
這篇文章主要介紹了python如何獲取apk的packagename和activity,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Python?多線程知識(shí)點(diǎn)總結(jié)及實(shí)例用法
在本篇內(nèi)容里小編給大家整理了一篇關(guān)于Python?多線程知識(shí)點(diǎn)總結(jié)及實(shí)例用法,對(duì)想好學(xué)習(xí)PY的用戶非常友好,需要的參考下吧。2021-12-12python使用any判斷一個(gè)對(duì)象是否為空的方法
這篇文章主要介紹了python使用any判斷一個(gè)對(duì)象是否為空的方法,并給出了改進(jìn)的方法供大家對(duì)比參考,具有一定的借鑒價(jià)值,需要的朋友可以參考下2014-11-11