如何在Python中按字母顺序对unicode字符串排序?
Python默认情况下按字节值排序,这意味着é在z和其他同样有趣的事情之后。在Python中按字母顺序排序的最佳方法是什么?
有图书馆吗?我什么都找不到。最好是排序应具有语言支持,以便它理解åäö应该用瑞典语在z之后排序,但是ü应该用u进行排序,依此类推。因此,Unicode支持非常必要。
如果没有它的库,什么是最好的方法?只是将字母映射到整数值,然后将字符串映射到整数列表?
回答:
IBM的ICU库可以做到这一点(还有更多)。它具有Python绑定:PyICU。
:在ICU之间进行排序的核心区别locale.strcoll
在于,ICU使用完整的Unicode排序算法,而strcoll
使用ISO14651。
此处简要总结了这两种算法之间的区别:http :
//unicode.org/faq/collation.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