【发布时间】:2018-04-01 13:46:49
【问题描述】:
如果符号 ˇ 不是字母,为什么 u'\u02c7'.isalpha() 返回 True?此方法仅适用于 ASCII 字符吗?
【问题讨论】:
-
它是字母,根据 Unicode 标准。
-
谢谢,你是对的,想通了
标签: python unicode python-unicode
如果符号 ˇ 不是字母,为什么 u'\u02c7'.isalpha() 返回 True?此方法仅适用于 ASCII 字符吗?
【问题讨论】:
标签: python unicode python-unicode
U+02c7 CARON 是Lm (Modifier Letter) category 中的一个代码点,所以根据 Unicode 标准,它是字母。
str.isalpha() 的文档清楚地说明了包含的内容:
字母字符是在 Unicode 字符数据库中定义为“字母”的字符,即一般类别属性为“Lm”、“Lt”、“Lu”、“Ll”或“Lo”之一的字符。 )
您没有定义正常工作的含义;显然,您对字母的构成有不同的定义。如果您只期望 Latin-1 字母,那么您需要限制还需要测试字符串是否可以安全地编码为 Latin-1。在 Unicode 的 Latin-1 子集中恰好有零个 Lm 类别代码点(也没有 Lt 字符,只有 2 个 Lo 字符,ª (U+00AA) 和 º (U+00BA))。
【讨论】:
L*)并且具有非0的组合类(因此它们修改其他字符)。组合字符是总是 标记(类别M*,组合标记),绝不是任何其他类别。见D52 in Chapter 3.6 of the Unicode comformance section。