Verificando substring difusa / aproximada existente em uma string mais longa, em Python?

Usando algoritmos como level-level (levelinstein ou difflib), é fácil encontrar matches aproximados.eg.

>>> import difflib
>>> difflib.SequenceMatcher(None,"amazing","amaging").ratio()
0.8571428571428571

As correspondências difusas podem ser detectadas, decidindo um limite conforme necessário.

Requisito atual: encontrar substrings difusas com base em um limite em uma string maior.

por exemplo.

large_string = "thelargemanhatanproject is a great project in themanhattincity"
query_string = "manhattan"
#result = "manhatan","manhattin" and their indexes in large_string

Uma solução de força bruta é gerar todas as substrings de comprimento N-1 a N + 1 (ou outro comprimento correspondente), onde N é o comprimento de query_string, e usar levenstein nelas uma a uma e ver o limiar.

Existe uma solução melhor disponível em python, de preferência um módulo incluído no python 2.7, ou um módulo disponível externamente.

ATUALIZAR : O módulo regex do Python funciona muito bem, embora seja um pouco mais lento que o inbuiltre módulo para casos de substring difusa, que é um resultado óbvio devido a operações extras. A saída desejada é boa e o controle sobre a magnitude da imprecisão pode ser facilmente definido.

>>> import regex
>>> input = "Monalisa was painted by Leonrdo da Vinchi"
>>> regex.search(r'\b(leonardo){e<3}\s+(da)\s+(vinci){e<2}\b',input,flags=regex.IGNORECASE)
<regex.Match object; span=(23, 41), match=' Leonrdo da Vinchi', fuzzy_counts=(0, 2, 1)>

questionAnswers(5)

yourAnswerToTheQuestion