IBM的ICU库可以做到这一点(还有更多)。它具有Python绑定:PyICU。
:在ICU之间进行排序的核心区别locale.strcoll
在于,ICU使用完整的Unicode排序算法,而strcoll
使用ISO14651。
此处简要总结了这两种算法之间的区别:http ://unicode.org/faq/collat??ion.html#13。这些是非常奇特的特殊情况,在实践中几乎没有关系。
>>> import icu # pip install PyICU
>>> sorted(['a','b','c','ä'])
['a', 'b', 'c', 'ä']
>>> collator = icu.Collator.createInstance(icu.Locale('de_DE.UTF-8'))
>>> sorted(['a','b','c','ä'], key=collator.getSortKey)
['a', 'ä', 'b', 'c']