python讀取中文txt文本的方法
對于python2.7
字符串在Python2.7內(nèi)部的表示是unicode編碼,因此,在做編碼轉(zhuǎn)換時(shí),通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼成unicode,再從unicode編碼成另一種編碼。
先用一些編輯器(如editplus )看一下你的txt文件保存的是utf-8,還是gb2312或其他的。當(dāng)你讀行時(shí)可以這樣
line = (file1.readline()).decode('utf-8').encode('gb2312')或
line = (file1.readline()).decode('gb2312').encode('utf-8')
注意:txt使用utf8編碼的時(shí)候會(huì)默認(rèn)在文件開頭插入三個(gè)不可見字符。這個(gè)是windows用來判斷txt編碼是否為utf8的。所以如果你直接使用decode('utf-8')的話是得不到正確結(jié)果的。
必須先判斷前三個(gè)字符是否是windows插入的那三個(gè)。這個(gè)python已經(jīng)定義了一個(gè)常量了,可以直接和這個(gè)常量比較,如果一樣就刪除前三個(gè)字符然后再decode。
import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")
延伸:
因?yàn)閐ecode的函數(shù)原型是decode([encoding], [errors='strict']),可以用第二個(gè)參數(shù)控制錯(cuò)誤處理的策略,默認(rèn)的參數(shù)就是strict,代表遇到非法字符時(shí)拋出異常;
如果設(shè)置為ignore,則會(huì)忽略非法字符;
如果設(shè)置為replace,則會(huì)用?取代非法字符;
如果設(shè)置為xmlcharrefreplace,則使用XML的字符引用。
對于Python3
python3下比較簡單,打開的時(shí)候指定encoding參數(shù)即可:open("txt.txt", encoding="gbk").read()。
以上這篇python讀取中文txt文本的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python編程快速上手——Excel到CSV的轉(zhuǎn)換程序案例分析
這篇文章主要介紹了Python Excel到CSV的轉(zhuǎn)換程序,結(jié)合具體案例形式分析了Python操作Excel到CSV轉(zhuǎn)換的操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-02-02
pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題
這篇文章主要介紹了pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python urlencode和unquote函數(shù)使用實(shí)例解析
這篇文章主要介紹了Python urlencode和unquote函數(shù)使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

