python len isalpha 中文小坑
阿新 • • 發佈:2019-01-22
近期在進行自然語言的處理,在使用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