Python Lo范畴的基数

Python Lo范畴的基数,python,unicode,Python,Unicode,我试图找出Unicode类别的基数,比如Lo。看来我找不到关于那件事的权威信息。例如,维护该类别中有11788字符的视图,低至122,Python的unicodedata,即使仅限于基本平面,也给出了高达45301!: 谁能告诉我一个可靠的消息来源来解决这个问题 编辑: Python代码段中的len(Lo)的结果取决于使用的版本,因此取决于Python版本。我的结果是Python2.6使用UCD版本5.1,Python2.7使用UCD版本5.2为同一表达式生成45877,Python3.2使用

我试图找出Unicode类别的基数,比如
Lo
。看来我找不到关于那件事的权威信息。例如,维护该类别中有
11788
字符的视图,低至
122
,Python的
unicodedata
,即使仅限于基本平面,也给出了高达
45301
!:

谁能告诉我一个可靠的消息来源来解决这个问题

编辑:


Python代码段中的
len(Lo)
的结果取决于使用的版本,因此取决于Python版本。我的结果是Python2.6使用UCD版本5.1,Python2.7使用UCD版本5.2为同一表达式生成
45877
,Python3.2使用UCD版本6.0可能会生成另一个数字。

最终信息将是表达式本身。特别是,提供了有关Unicode字符数据库的信息的字符数据库信息。当前标准有11788个Lo分类代码点。

引用Python的文档
unicodedata

此模块提供对Unicode字符数据库的访问,该数据库 定义所有Unicode字符的字符属性。中的数据 该数据库基于UnicodeData.txt文件版本5.2.0,该版本 可从中公开获取

模块使用的名称和符号与 Unicode数据文件格式5.2.0(参见 ).它定义了 以下功能:

Unicode联盟在其“关于我们”中:

Unicode联盟是一个致力于 开发、维护和促进软件国际化 标准和数据,特别是Unicode标准 所有现代软件产品和软件中的文本表示 标准。Unicode联合会积极开发该领域的标准 国际化领域,包括定义行为和 Unicode字符之间的关系。联合体密切合作 W3C和ISO,尤其是ISO/IEC/JTC 1/SC2/WG2 负责维护国际标准ISO/IEC 10646 与Unicode标准同步

从主页上看,当前的标准似乎是6.1(2012年5月),因此有可能从5.2版(2009年10月)开始,一些“Lo”字符被重新分类


检查:

我在狭窄的python上找到了
45877
build@J.F.Sebastian这里的45877也很好,尽管您必须深入到这个文件()才能真正找到答案。现在的问题仍然是,为什么Python的unicodedata模块还有很长的路要走……谢谢,说得好,但即使查看5.2.0数据,对“Lo”进行grepping也会产生
10584
。奇怪的是,
unicodedata
模块大约关闭了4倍…@ThomasH:grepping for
“Lo”
会导致当前标准11790的错误结果<代码>';瞧产生11788。@J.F.Sebastian准确地说,我在这两种情况下都使用了
egrep-c-e'\bLo\b'
,这也为当前数据产生11788。@ThomasH基于5.2-有
21829
行。。其中,
7189
被分类为“Lo”-但是,将
范围(65536)
中的所有代码点都不在UnicodeData.txt中-并应用
UnicodeData.category(unichr(i))
产生以下结果:
{Cs':2042,'Lo':38688,'Co':6398,'Cn':2724}
-所以
45877
是“
7189+38688
-s”提出的问题是-
unicodedata.category
unicodedata.txt
之外使用什么逻辑对其进行分类。查看UnicodeData.txt,直到代码点FFFF(65535),这里给出了三个范围,其中第一个、最后一个具有类别“Lo”。我想如果你把这些范围缩小并计算代码点,你的
38688
-我仍然没有得到
45877
(使用Python 2.6),不过。。。
In [219]: Lo=[unichr(c) for c in xrange(65536) 
              if unicodedata.category(unichr(c)) == 'Lo']

In [220]: len(Lo)
Out[220]: 45301