如果符号u'\u02c7'.isalpha()
不是字母,为什么ˇ
会返回True?这种方法只能用ASCII字符正常工作吗?
答案 0 :(得分:3)
U+02c7 CARON是Lm (Modifier Letter) category中的代码点,因此根据Unicode标准,它是字母。
str.isalpha()
的文档清楚地说明了所包含的内容:
字母字符是在Unicode字符数据库中定义为“Letter”的那些字符,即具有一般类别属性的那些字符是“Lm”,“Lt”,“Lu”,“L1”或“Lo”之一。 )
你没有明确正常工作的意思;很明显,你对字母的构成有不同的定义。如果你只想要 Latin-1 字母,那么你还需要限制测试字符串是否可以安全地编码为Latin-1。 Latin的Latin-1子集中只有零Lm类别的代码点(也没有Lt字符,只有2个Lo字符,ª(U + 00AA)和º(U + 00BA))。