2009-10-20 42 views
2
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") 

,我也得到:Python的排序不正確的Unicode

 
a 
d 
č 

它應該是:

 
a 
č 
d 

斯洛文尼亞字母是這樣:ABCč高清摹.....

我使用WIN XP(活動代碼頁:852 - 斯洛文尼亞)。你可以幫我嗎?

+4

完全重複:http://stackoverflow.com/questions/1097908/how-do-i-sort-alphabetically-in-python – DigitalRoss

回答

1

請參閱locale語言感知排序模塊。尤其是strcollstrxfrm功能。

2

我解決這個問題的,現在有一個工作程序:

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] 
+0

我知道這是一個古老的問題,但它在Python 2.7.3上對我無效。我得到:a a c a a ab b c d –