Python没有正确排序Unicode文本

2 投票
2 回答
2366 浏览
提问于 2025-04-15 15:13
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 模块,它可以帮助你进行考虑语言的排序。特别是 strcollstrxfrm 这两个函数。

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]

撰写回答