Python Lo范畴的基数
我试图找出Unicode类别的基数,比如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使用
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