| 12
 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