Python 3 字符串排序是否依赖于区域设置?
Python中的 str.__lt__
或 sorted
是根据字符的unicode索引来排序,还是根据某些地区特定的排序规则来排序呢?
1 个回答
9
不,字符串的排序并不考虑地区设置。它完全是根据Unicode编码点的排序规则来进行的。
locale
模块确实提供了一个可以用于地区特定排序的locale.strxfrm()
函数:
import locale
sorted(list_of_strings, key=locale.strxfrm)
不过这个工具的功能非常有限;如果你有更复杂的排序需求,可能需要使用PyICU库:
import PyICU
collator = PyICU.Collator.createInstance(PyICU.Locale(locale_spec))
sorted(list_of_strings, key=collator.getSortKey)