在使用Python 3中時,我們會遇到兩種主要的文本數(shù)據(jù)類型。一個是字符串基茵,默認(rèn)是必逆。另一個類型是字節(jié)侍咱,可以把一個字符串轉(zhuǎn)換成指定的字節(jié)編碼。
str.encode("utf-8", errors="replace")
str.decode("utf-8")
讀取文件內(nèi)容時的解碼問題
有時在使用read_csv
方法時澜公,會出現(xiàn)如下的報(bào)錯,說明無法使用utf-8解碼
使用chardet模塊
對于未知編碼的bytes
喇肋,要把它轉(zhuǎn)換成str
坟乾,需要先“猜測”編碼。猜測的方式是先收集各種編碼的特征字符蝶防,根據(jù)特征字符判斷甚侣,就能有很大概率“猜對”。
記得先導(dǎo)入chardet模塊
import chardet
檢測出的編碼是Windows-1252间学,注意到還有個confidence字段殷费,表示檢測的概率是0.73(即73%)。
PS
也會出現(xiàn)檢測匹配概率為100%低葫,卻依然無法解碼的情況
說明樣本數(shù)量還不夠详羡,不足以代表整體的編碼特征。我直接加到了十萬嘿悬,檢測文件的前十萬個字節(jié)
說句題外話,在《赤裸裸的統(tǒng)計(jì)學(xué)》一書中提到了樣本容量的重要性善涨,容量越大越好窒盐。從上面這個問題中足以見得。
保存utf-8編碼文件
在Python中钢拧,utf-8是標(biāo)準(zhǔn)編碼方式蟹漓,因此默認(rèn)保存utf-8編碼文件
data.to_csv("xxxx.csv")