Python无法正确排序unicode。Strcoll没有帮助
显然,在所有平台上进行排序的唯一方法是使用具有PyICU绑定的ICU库(在PyPI上为PyICU)。
在OS X:上sudo port installpy26-pyicu,请注意此处描述的错误:https ://svn.macports.org/ticket/23429(使用Macports的乐趣)。
不幸的是,严重缺乏PyICU的文档,但是我设法找出了它的完成方法:
import PyICUcollator = PyICU.Collator.createInstance(PyICU.Locale(’pl_PL.UTF-8’))print [i for i in sorted([u’a’, u’z’, u’ą’], cmp=collator.compare)]
这使:
[u’a’, u’ą’, u’z’]
另一个优点-@bobince:它是线程安全的,因此在设置请求方式的语言环境时并非没有用。
解决方法我在OSX和Linux上的Python 2.5.1和2.6.5中使用Unicode排序规则对列表进行排序时遇到问题。
import locale locale.setlocale(locale.LC_ALL,’pl_PL.UTF-8’)print [i for i in sorted([u’a’,u’z’,u’ą’],cmp=locale.strcoll)]
应该打印:
[u’a’,u’ą’,u’z’]
而是打印出来:
[u’a’,u’ą’]
总结一下-好像strcoll坏了。尝试了各种类型的变量(例如非Unicode编码的字符串)。
我做错了什么?
最好的问候,Tomasz Kopczuk。
相关文章:
1. python+excel接口自动化获取token并作为请求参数进行传参操作2. docker /var/lib/docker/aufs/mnt 目录清理方法3. Vuex localStorage的具体使用4. python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例5. Notepad++如何安装Python插件?Notepad++插件怎么装?6. 详解JAVA设计模式之代理模式7. 6个常见的 PHP 安全性攻击实例和阻止方法8. 《CSS3实战》笔记--渐变设计(三)9. Python matplotlib画图时图例说明(legend)放到图像外侧详解10. ASP.NET泛型三之使用协变和逆变实现类型转换

网公网安备