dupliquées possible:
Python not sorting unicode properly. Strcoll doesn't help.chaînes de tri avec les caractères accentués en python
Je suis en train de trier quelques mots par ordre alphabétique. Voici comment je le fais:
#!/opt/local/bin/python2.7
# -*- coding: utf-8 -*-
import locale
# Make sure the locale is in french
locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
print "locale: " + str(locale.getlocale())
# The words are in alphabetical order
words = ["liche", "lichée", "lichen", "lichénoïde", "licher", "lichoter"]
for word in sorted(words, cmp=locale.strcoll):
print word.decode("string-escape")
J'attends que les mots sont imprimés dans le même ordre que sont définis, mais voici ce que je reçois:
locale: ('fr_FR', 'UTF8')
liche
lichen
licher
lichoter
lichée
lichénoïde
Le é le caractère est traité comme s'il était supérieur à z.
Il semble que je ne comprenne pas comment locale.strcoll
compare les chaînes. Quelle fonction de comparaison devrais-je utiliser pour obtenir les mots classés par ordre alphabétique?
Il semble que cela fonctionne correctement. Je ne peux pas voir "z". –
Il n'y a pas de 'z' dans cet exemple, mais le' é' vient après le 'o', ce qui n'est pas l'ordre alphabétique. – 0xced
Fonctionne bien dans 2.6.4. –