python访问icu文本排序规则
zope.ucol的Python项目详细描述
这个包为International Component for Unicode (ICU)提供了一个python接口。
内容
Change History
1.0.2 (2006-10-16)
修复了安装文件问题。
1.0.1 (2006-10-16)
已将缺少的导入添加到setup.py。
1.0 (2006-10-16)
初始版本。
Installation
zope.ucol以通常的方式通过setup.py安装。
你必须安装ICU。如果ICU没有像往常一样安装 在系统中包含文件和库的位置,可以提供 生成扩展时setup.py的命令行选项,如:
python2.4 setup.py build_ext \ -I/home/jim/p/z4i/jim-icu/var/opt/icu/include \ -L/home/jim/p/z4i/jim-icu/var/opt/icu/lib \ -R/home/jim/p/z4i/jim-icu/var/opt/icu/lib python2.4 setup.py install
注意,如果库位于一个不寻常的地方,您将希望 使用-r选项指定它们的位置,这样就不必 在运行时指定它。
Detailed Documentation
使用icu基于区域设置的文本排序
ucol包在
Unicode(ICU)库的国际组件的uColC API。
它提供基于区域设置的文本排序规则。
要执行排序,您需要为
你的地点。在本例中,我们将使用特殊的“根”区域设置:
>>> import zope.ucol
>>> collator = zope.ucol.Collator("root")
collator有一个用于从unicode创建排序规则键的键方法。
串。方法可以作为list.sort的键参数传递。
或者内置的排序函数。
>>> sorted([u'Sam', u'sally', u'Abe', u'alice', u'Terry', u'tim',
... u'\U00023119', u'\u62d5'], key=collator.key)
[u'Abe', u'alice', u'sally', u'Sam', u'Terry', u'tim',
u'\u62d5', u'\U00023119']
有一个用于比较两个unicode字符串的cmp方法,也可以是
排序时使用:
>>> sorted([u'Sam', u'sally', u'Abe', u'alice', u'Terry', u'tim',
... u'\U00023119', u'\u62d5'], collator.cmp)
[u'Abe', u'alice', u'sally', u'Sam', u'Terry', u'tim',
u'\u62d5', u'\U00023119']
注意,将键方法传递给
排序函数,而不是cmp方法。CMP方法
在字符串长且很少的特殊情况下以及
他们一开始就有分歧。这是因为计算
当
顺序可以通过分析
原始字符串。
Collator attributes
您可以向collator询问其语言环境:
>>> collator.locale
'root'
您可以查看是否使用了默认排序规则信息:
>>> collator.used_default_information
0
>>> collator = zope.ucol.Collator("eek")
>>> collator.used_default_information
1
>>> import zope.ucol >>> collator = zope.ucol.Collator("root")
>>> sorted([u'Sam', u'sally', u'Abe', u'alice', u'Terry', u'tim', ... u'\U00023119', u'\u62d5'], key=collator.key) [u'Abe', u'alice', u'sally', u'Sam', u'Terry', u'tim', u'\u62d5', u'\U00023119']
>>> sorted([u'Sam', u'sally', u'Abe', u'alice', u'Terry', u'tim', ... u'\U00023119', u'\u62d5'], collator.cmp) [u'Abe', u'alice', u'sally', u'Sam', u'Terry', u'tim', u'\u62d5', u'\U00023119']
Collator attributes
您可以向collator询问其语言环境:
>>> collator.locale 'root'
您可以查看是否使用了默认排序规则信息:
>>> collator.used_default_information 0 >>> collator = zope.ucol.Collator("eek") >>> collator.used_default_information 1