1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| # encoding:UTF-8
import locale
class Compfr(object):
def __init__(self, decod='utf-8'):
self.decod = decod
locale.setlocale(locale.LC_ALL, '')
self.espinsec = u'\xA0' # espace insécable
def __call__(self, v1, v2):
# on convertit en unicode si nécessaire
if isinstance(v1, str):
v1 = v1.decode(self.decod)
if isinstance(v2, str):
v2 = v2.decode(self.decod)
# on retire les tirets et les blancs insécables
v1 = v1.replace(u'-', u'')
v1 = v1.replace(self.espinsec, u'')
v2 = v2.replace(u'-', '')
v2 = v2.replace(self.espinsec, u'')
# on retourne le résultat de la comparaison
return locale.strcoll(v1, v2)
if __name__ == "__main__":
## L = ['pèche', 'PÈCHE', 'pêche', 'PÊCHE', 'péché', 'PÉCHÉ', 'pécher', 'pêcher']
L = ["il", "Æ", "être", "île", "éveil", "aba", "afa", "oda", "ofa", "eve", "ila", "ilf"]
## compfr = Compfr()
compfr = Compfr("iso-8859-7")
L.sort(cmp=compfr)
for mot in L:
print mot |
Partager