[Python-de] Unicode und sort()

Matthias Huening mhuening at zedat.fu-berlin.de
Mit Sep 15 09:36:32 CEST 2004


Hallo,
ich habe ein kleines Problem mit dem Sortieren von Unicode. Ich gebe 
mal ein kleines Beispiel (Python 2.3.3, deutsches Windows XP):

###########################

#! Python
# -*- coding: iso-8859-1 -*-

import locale
locale.setlocale(locale.LC_ALL,"")

def sortDeutsch(a,b):
    return locale.strcoll(a, b)
    
s = 'überall Üxeküll Übermacht übernachten über übermenschlich'

print "Sort according to German Locale:"
sList =s.split()
sList.sort(sortDeutsch)
for x in sList:
    print x

print '--------' 

print "Same with Unicode:"
s = unicode(s, 'latin-1')
sList = s.split()
sList.sort(sortDeutsch)
for x in sList:
    print x.encode('latin-1')

###########################

Nach der Umwandlung in Unicode wird leider falsch sortiert (= nicht 
nach den deutschen Konventionen). 'über' wird falsch einsortiert. 
a) warum eigentlich?
b) wie sortiert man am besten und effektivsten Unicode entsprechend 
Locale?

Matthias