Python無(wú)法正確排序unicode。Strcoll沒(méi)有幫助
顯然,在所有平臺(tái)上進(jìn)行排序的唯一方法是使用具有PyICU綁定的ICU庫(kù)(在PyPI上為PyICU)。
在OS X:上sudo port installpy26-pyicu,請(qǐng)注意此處描述的錯(cuò)誤:https ://svn.macports.org/ticket/23429(使用Macports的樂(lè)趣)。
不幸的是,嚴(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’]
另一個(gè)優(yōu)點(diǎn)-@bobince:它是線程安全的,因此在設(shè)置請(qǐng)求方式的語(yǔ)言環(huán)境時(shí)并非沒(méi)有用。
解決方法我在OSX和Linux上的Python 2.5.1和2.6.5中使用Unicode排序規(guī)則對(duì)列表進(jìn)行排序時(shí)遇到問(wè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’]
而是打印出來(lái):
[u’a’,u’?’]
總結(jié)一下-好像strcoll壞了。嘗試了各種類型的變量(例如非Unicode編碼的字符串)。
我做錯(cuò)了什么?
最好的問(wèn)候,Tomasz Kopczuk。
相關(guān)文章:
1. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )2. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象3. ASP新手必備的基礎(chǔ)知識(shí)4. Docker 啟動(dòng)Redis 并設(shè)置密碼的操作5. asp文件用什么軟件編輯6. 通過(guò)IEAD+Maven快速搭建SSM項(xiàng)目的過(guò)程(Spring + Spring MVC + Mybatis)7. JS中6個(gè)對(duì)象數(shù)組去重的方法8. vue+element開(kāi)發(fā)一個(gè)谷歌插件的全過(guò)程9. 利用CSS制作3D動(dòng)畫(huà)10. Vue axios獲取token臨時(shí)令牌封裝案例

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