1. 程式人生 > >python len isalpha 中文小坑

python len isalpha 中文小坑

近期在進行自然語言的處理,在使用len函式和isalpha函式時發現幾個坑。現在略述一下,才疏學淺還請大牛批評指正。

len和isalpha函式對於str型別或者unicode型別的英文都有效,但是對於中文就要區別對待了!對於中文來說,在python2.7預設字元編碼型別下,一箇中文字元佔兩個(windows環境)或者三個(ubuntu系統)字元,所以此時len函式返回的是:真實字元數目*2或者3,而英文符號還是一個字元,所以len返回真實的英文數目。在unicode編碼下,一箇中文字元佔一個unicode碼,所以len返回真實字元數目,同樣英文字元也是佔一個unicode編碼,返回真實字元數目。

isalpha函式是針對python2.7預設字元編碼下的字串設計的,所不適用於unicode編碼,在unicode編碼下會出錯。具體請看下面的程式碼例子。

一.關於len的例子


上面是在ubuntu中執行的,下面是window中執行的。

二.關於isalpha的例子


三.str(),decode(),encode()的使用區別

我們知道資料型別有:string,int,float等,這些型別相互轉換使用str()

string有很多字元編碼,ascii,unicode,gbk,這些編碼間相互轉化使用decode和encode