如何在Python中按字母顺序对unicode字符串排序?

Python默认情况下按字节值排序,这意味着é在z和其他同样有趣的事情之后。在Python中按字母顺序排序的最佳方法是什么?

有图书馆吗?我什么都找不到。最好是排序应具有语言支持,以便它理解åäö应该用瑞典语在z之后排序,但是ü应该用u进行排序,依此类推。因此,Unicode支持非常必要。

如果没有它的库,什么是最好的方法?只是将字母映射到整数值,然后将字符串映射到整数列表?

回答:

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']

以上是 如何在Python中按字母顺序对unicode字符串排序? 的全部内容, 来源链接: utcz.com/qa/413919.html

回到顶部