Python無法正確排序unicode。Strcoll沒有幫助
顯然,在所有平臺上進(jìn)行排序的唯一方法是使用具有PyICU綁定的ICU庫(在PyPI上為PyICU)。
在OS X:上sudo port installpy26-pyicu,請注意此處描述的錯誤:https ://svn.macports.org/ticket/23429(使用Macports的樂趣)。
不幸的是,嚴(yán)重缺乏PyICU的文檔,但是我設(shè)法找出了它的完成方法:
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’]
另一個優(yōu)點(diǎn)-@bobince:它是線程安全的,因此在設(shè)置請求方式的語言環(huán)境時并非沒有用。
解決方法我在OSX和Linux上的Python 2.5.1和2.6.5中使用Unicode排序規(guī)則對列表進(jìn)行排序時遇到問題。
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)]
應(yīng)該打印:
[u’a’,u’?’,u’z’]
而是打印出來:
[u’a’,u’?’]
總結(jié)一下-好像strcoll壞了。嘗試了各種類型的變量(例如非Unicode編碼的字符串)。
我做錯了什么?
最好的問候,Tomasz Kopczuk。
相關(guān)文章:
1. 編程語言PHP在Web開發(fā)領(lǐng)域的優(yōu)勢在哪?2. Android如何加載Base64編碼格式圖片3. 什么是python的自省4. 詳解Android studio 動態(tài)fragment的用法5. 基于android studio的layout的xml文件的創(chuàng)建方式6. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁效果(實(shí)例代碼)7. 解決Android studio xml界面無法預(yù)覽問題8. 圖文詳解vue中proto文件的函數(shù)調(diào)用9. .Net Core使用Coravel實(shí)現(xiàn)任務(wù)調(diào)度的完整步驟10. 在IDEA中實(shí)現(xiàn)同時運(yùn)行2個相同的java程序

網(wǎng)公網(wǎng)安備