Python没有正确排序Unicode文本
data = [unicode('č', "cp1250"),
unicode('d', "cp1250"),
unicode('a', "cp1250")]
data.sort(key=unicode.lower)
for x in range(0,len(data)):
print data[x].encode("cp1250")
然后我得到了:
a d č
应该是:
a č d
斯洛文尼亚字母是这样的:a b c č d e f g.....
我在使用WIN XP(活动代码页:852 - 斯洛文尼亚)。你能帮我吗?
2 个回答
1
查看一下 locale
模块,它可以帮助你进行考虑语言的排序。特别是 strcoll
和 strxfrm
这两个函数。
3
我解决了这个问题,现在有一个可以正常运行的程序:
import locale
locale.setlocale(locale.LC_ALL, 'slovenian')
data = ['č', 'ab', 'aa', 'a', 'd', 'ć', 'B', 'c']
data.sort(key=locale.strxfrm)
print "Sorted..."
for x in range(0,len(data)):
print data[x]