程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python第三方庫-字符串編碼工具 chardet 的使用(python3經典編程案例)

編輯:Python

一. chardet介紹

chardet這個第三方庫的使用非常容易,chardet支持檢測中文、日文、韓文等多種語言。

字符串編碼一直是令人非常頭疼的問題,尤其是我們在處理一些不規范的第三方網頁的時候。雖然Python提供了Unicode表示的str和bytes兩種數據類型,並且可以通過encode()和decode()方法轉換,但是,在不知道編碼的情況下,對bytes做decode()不好做。

對於未知編碼的bytes,要把它轉換成str,需要先“猜測”編碼。猜測的方式是先收集各種編碼的特征字符,根據特征字符判斷,就能有很大概率“猜對”。

官方文檔:https://chardet.readthedocs.io/en/latest/

github地址:https://github.com/chardet/chardet

安裝:pip3 install chardet

截至目前,可以檢測的編碼:

  • ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
  • Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
  • EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
  • EUC-KR, ISO-2022-KR, Johab (Korean)
  • KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
  • ISO-8859-5, windows-1251 (Bulgarian)
  • ISO-8859-1, windows-1252 (Western European languages)
  • ISO-8859-7, windows-1253 (Greek)
  • ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
  • TIS-620 (Thai)

二. 使用chardet

2.1 檢測編碼是ascii

當我們拿到一個bytes時,就可以對其檢測編碼。用chardet檢測編碼,只需要一行代碼:

import chardet
print(chardet.detect(b'Hello, world!'))
# 運行結果
# 檢測出的編碼是ascii,注意到還有個confidence字段,表示檢測的概率是1.0(即100%)。
{
'encoding': 'ascii', 'confidence': 1.0, 'language': ''}

2.2 檢測GBK編碼:

import chardet
data = '真相只有一個'.encode('gbk')
print(chardet.detect(data))
# 運行結果
# 檢測的編碼是GB2312,注意到GBK是GB2312的超集,兩者是同一種編碼,檢測正確的概率是99%,
# language字段指出的語言是'Chinese'。
{
'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}

2.3 對UTF-8編碼進行檢測

import chardet
data = '真相只有一個'.encode('utf-8')
print(chardet.detect(data))
# 運行結果
{
'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

2.4 檢測日文

import chardet
data = '真実はいつもひとつ'.encode('euc-jp')
print(chardet.detect(data))
# 運行結果
{
'encoding': 'EUC-JP', 'confidence': 1.0, 'language': 'Japanese'}

可見,用chardet檢測編碼,非常簡單。獲取到編碼後,再轉換為str,就可以方便後續處理。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved