【python】python編碼方式,chardet編碼識別庫


環境:

  python3.6  

需求:

  針對於打開一個文件,可以讀取到文本的編碼方式,根據默認的文件編碼方式來獲取文件,就不會出現亂碼。  

  針對這種需求,python中有這個方式可以很好的解決:

解決策略:

  chardet是一個非常優秀的編碼識別模塊。
  chardet 是python的第三方庫,需要下載和安裝。
 

下載地址:

  官方推薦下載地址: https://pypi.org/project/chardet/
 

安裝事項:

  如果采用源代碼安裝方法,有可能會提示缺少setuptools這個模塊。
  因此這里我們采用另外一種更為方便的安裝方法,不論你選擇哪種安裝包,將它解壓得到其中的文件夾【chardet】將這個文件夾復制到【python安裝根目錄\Lib\site-packages】下,確保這個位置可以被python引用到。
  如果不能被引用到請加入環境變量。【這在windows和linux下都是適用的】
 

開始本文:

  因使用pycharm做python的開發工作,所以使用pycharm下載安裝是個更高效的選擇!!
 

1.使用pycharm安裝chardet第三方庫。

左上角File->Default Settings->進入Project Interpreter【工程翻譯???什么鬼,Project Depend比較貼切吧】

 

2.查找chardet

注意是chardet不是charset

安裝成功

 

3.開始使用chardet查看文件文本內容的編碼方式

代碼:【注意,open需要指定打開模式為'b'二進制打開,並且需要'rb'或'wb'或其他組合方式,僅使用'b'模式不夠】

import chardet


fileName = 'E:/2/采集數據_pswf12_180大0小35750_20181206.txt'

currentFile = open(fileName,mode='rb')
content = currentFile.read()

print(chardet.detect(content))

 

查看結果:

編碼方式為utf-8的概率為99%

 

使用chardet判斷編碼方式后,就可以放心采用本種編碼方式去去讀取文本內容而不怕報錯或亂碼

import chardet


fileName = 'E:/2/采集數據_pswf12_180大0小35750_20181206.txt'

# 按照二進制只讀模式 打開文件 讀取並解析文本內容的編碼方式
currentFile = open(fileName,mode='rb')
content = currentFile.read()
print(chardet.detect(content))



# 按照編碼方式為  UTF-8讀取整個文本內容
currentFile = open(fileName,encoding='utf-8')
content = currentFile.read()
print(content)



# 關閉文件
currentFile.close()

 

 

 

 

4.按行讀取,更快

import chardet


fileName = 'E:/2/采集數據_pswf12_180大0小35750_20181206.txt'

# 按照二進制只讀模式 打開文件 僅讀取一行  並解析文本內容的編碼方式
currentFile = open(fileName,mode='rb')
content = currentFile.readline()
print(chardet.detect(content))



# 按照編碼方式為  UTF-8 按行讀取  整個文本內容
currentFile = open(fileName,encoding='utf-8')
line = currentFile.readline()

while line:
    print(line)
    line = currentFile.readline()



# 關閉文件
currentFile.close()

 

 

 

 

 

 

 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM