# -*- Encoding: utf-8 -*-
import re


def dist_pat(w):
    # remplacement ou effacement de la lettre en position i
    ll = [ w[:i] + '.?' + w[i+1:] +'$'  for i in range(len(w))]
    # insertion d'une lettre avant la position i
    ll.extend([w[:i] + '.' + w[i:] + '$' for i in range(len(w)+1)])
    # le "ou" de toutes ces conditions
    return '(' + '|'.join(ll) + ')'


def lookup(w):
    ll=[x.decode('latin1')
        for x in open('liste.de.mots.francais.frgut.txt').readlines()]
    if w:
        s=dist_pat(w.decode('utf8')); p=re.compile(s, re.U)
        return [w.rstrip() for w in ll if re.match(p,w)]
    else: return [x.rstrip() for x in ll if len(x.rstrip())==1]


## >>> lookup('até')
## [u'ax\xe9', u'dat\xe9', u'\xe9t\xe9', u'mat\xe9', u'\xf4t\xe9', u'rat\xe9', u't\xe9']
## >>> for x in _: print x,
##
## axé daté été maté ôté raté té