遇到了一个需求,有一对字符串数据需要使用python区分是否是纯英文,这些数据来源于不同国家的输入,区分的目的是为了大概统计英语的输入和其他语言输入的比例。
首先想到的是python提供的函数str.isalpha():
def judge_pure_english(keyword):
return keyword.isalpha()
而这样的结果并非满足需求,isalpha()只能判断一个字符串是否是一个的单词,也就是没有空格和其他符号的纯字符即满足条件:
[113211]is english[.гугал плей->False]
[113212]is english[노래->True]
[113213]is english[亲戚->True]
[113214]is english[ខ្មែ->False]
[113215]is english[євротрек драйвер->False]
[113216]is english[Sweater Weather->False]
[113217]is english[Toca led->False]
[113218]is english[электронды намаз->False]
[113219]is english[шщенок->True]
[113220]is english[графический планшет->False]
[113221]is english[готы->True]
[113222]is english[mindmars->True]
[113223]is english[че. а->False]
[113224]is english[гонки от полиции->False]
[113225]is english[футлол шоу->False]
[113226]is english[фспышка на звонок->False]
[113227]is english[фрийдом->True]
[113228]is english[фотошоп причесок->False]
[113229]is english[TouchPal SkinPack->False]
[113230]is english[голсовой яндекс->False]
而我们需要的是判断英文,即便有空格也不要紧,于是采用另一种办法:
def judge_pure_english(keyword):
return all(ord(c) < 128 for c in keyword)
这样就彻底解决问题了,速度也不慢:
[113210]is english[003 rt->True]
[113211]is english[.гугал плей->False]
[113212]is english[노래->False]
[113213]is english[亲戚->False]
[113214]is english[ខ្មែ->False]
[113215]is english[євротрек драйвер->False]
[113216]is english[Sweater Weather->True]
[113217]is english[Toca led->True]
[113218]is english[электронды намаз->False]
[113219]is english[шщенок->False]
[113220]is english[графический планшет->False]
[113221]is english[готы->False]
[113222]is english[mindmars->True]
[113223]is english[че. а->False]
[113224]is english[гонки от полиции->False]
[113225]is english[футлол шоу->False]
[113226]is english[фспышка на звонок->False]
[113227]is english[фрийдом->False]
[113228]is english[фотошоп причесок->False]
[113229]is english[TouchPal SkinPack->True]
[113230]is english[голсовой яндекс->False]
得到了想要的结果,通过编码来判断,英文中是用的字母,数字,空格都被认为是英文,一旦出现超出这个范围的字符,就被认为是其他语言。