python len isalpha 中文小坑

来源:互联网 发布:爱思助手mac版 编辑:程序博客网 时间:2024/06/06 14:05

近期在进行自然语言的处理,在使用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

0 0