Я обнаружил, что difflib.get_close_matches - это самый простой способ сопоставления строк/нечетких совпадений. Но есть еще несколько более продвинутых библиотек, таких как fuzzywuzzy, как вы упомянули в комментариях.
Но если вы хотите использовать difflib, вы можете использовать difflib.SequenceMatcher, чтобы получить оценку следующим образом:
import difflib
my_str = 'apple'
str_list = ['ape' , 'fjsdf', 'aerewtg', 'dgyow', 'paepd']
best_match = difflib.get_close_matches(my_str,str_list,1)[0]
score = difflib.SequenceMatcher(None, my_str, best_match).ratio()
В этом примере, лучший матч между «яблоком» и в списке есть «обезьяну» и оценка 0,75.
Вы также можете перебрать список и вычислить все баллы, чтобы проверить:
for word in str_list:
print "score for: " + my_str + " vs. " + word + " = " + str(difflib.SequenceMatcher(None, my_str, word).ratio())
Для этого примера, вы получите следующее:
score for: apple vs. ape = 0.75
score for: apple vs. fjsdf = 0.0
score for: apple vs. aerewtg = 0.333333333333
score for: apple vs. dgyow = 0.0
score for: apple vs. paepd = 0.4
Документация для difflib можно найти здесь: https://docs.python.org/2/library/difflib.html
Обнаружена отличная библиотека, которая может быстро и точно оценивать сходство между двумя строками - fuzzywuzzy [link] (https://pypi.python.org/pypi/fuzzywuzzy) – Gil