在 Python 中检测字母字符属于哪些字母

Eli*_*Eli 5 python nlp

有没有库或其他简单的方法来检测Python中哪些字母字符属于?我知道我可以为此使用 unicode 代码范围,但如果已经有内置方法或库或某些提供映射的类库,我宁愿不重新发明轮子。

\n\n

注意:我问的是字母表而不是语言。“hello”和“hola”都将映射到拉丁字母,而“\xd0\x9f\xd0\xbe\xd0\xb8\xd1\x81\xd0\xba”将映射到西里尔字母。

\n

Eli*_*Eli 4

Python 的unicodedata在这里非常有帮助,这个问题/答案也是如此

\n\n

如果不编写整个模块,我找不到任何简单的方法来检测语言,并且我认为我会遇到很多极端情况,所以我编写了一个库。Github 页面在这里。这样,您就可以:

\n\n
pip install alphabet-detector\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后直接使用:

\n\n
from alphabet_detector import AlphabetDetector\nad = AlphabetDetector()\n\nad.only_alphabet_chars(u"\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac means greek", "LATIN") #False\nad.only_alphabet_chars(u"\xce\xb5\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac", "GREEK") #True\nad.only_alphabet_chars(u"frapp\xc3\xa9", "LATIN") #True\nad.only_alphabet_chars(u"h\xc3\xb4tel l\xc5\x93we", "LATIN") #True\nad.only_alphabet_chars(u"123 \xc3\xa5ngstrom \xc3\xb0 \xc3\xa1\xc3\x9f", "LATIN") #True\nad.only_alphabet_chars(u"russian: \xd0\xb3\xd0\xb0\xd0\xb3\xd0\xb0", "LATIN") #False\nad.only_alphabet_chars(u"\xd0\xb3\xd0\xb0\xd0\xb3\xd0\xb0", "CYRILLIC") #True\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还为主要语言编写了一些便捷方法:

\n\n
ad.is_cyrillic(u"\xd0\xb3\xd0\xb0\xd0\xb3\xd0\xb0") #True  \nad.is_latin(u"howdy") #True\nad.is_cjk(u"hi") #False\nad.is_cjk(u\'\xe6\xb1\x89\xe5\xad\x97\') #True\n
Run Code Online (Sandbox Code Playgroud)\n