Dai un'occhiata a "corrispondenza fuzzy". Alcuni ottimi strumenti nel thread qui sotto che calcola le somiglianze tra le stringhe.
Sono particolarmente affezionato al modulo difflib
>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
>>> import keyword
>>> get_close_matches('wheel', keyword.kwlist)
['while']
>>> get_close_matches('apple', keyword.kwlist)
[]
>>> get_close_matches('accept', keyword.kwlist)
['except']
https://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-string-comparison