Python - isalpha() 在 unicode 修饰符上返回 True

Kos*_*tya -1 python unicode python-unicode

u'\\u02c7'.isalpha()如果符号\xcb\x87不是字母,为什么返回 True?此方法仅适用于 ASCII 字符吗?

\n

Mar*_*ers 5

U+02c7 CARON是Lm(修饰符字母)类别中的代码点,因此根据 Unicode 标准,它是字母表。

\n\n

的文档str.isalpha()清楚地说明了其中包含的内容:

\n\n
\n

字母字符是在 Unicode 字符数据库中定义为 \xe2\x80\x9cLetter\xe2\x80\x9d 的字符,即,一般类别属性为 \xe2\x80\x9cLm\xe2\x80\x9d、\xe2 之一的字符\x80\x9cLt\xe2\x80\x9d、\xe2\x80\x9cLu\xe2\x80\x9d、\xe2\x80\x9cLl\xe2\x80\x9d 或 \xe2\x80\x9cLo\xe2\x80\x9d .)

\n
\n\n

你没有定义“正常工作”的含义;显然,您对字母的构成有不同的定义。如果您只期望Latin-1字母,那么您需要限制,还需要测试字符串是否可以安全地编码为 Latin-1。Unicode 的 Latin-1 子集中恰好有零个 Lm 类别代码点(也没有 Lt 字符,只有 2 个 Lo 字符,\xc2\xaa (U+00AA) 和 \xc2\xba (U+00BA))。

\n