I have a list of words
list = ['car', 'animal', 'house', 'animation']
and I want to compare every list item with a string str1
and the output should be the most similar word. Example: If str1
would be anlmal
then animal
is the most similar word. How can I do this in python? Usually the words I have in my list are good distinguishable from
each other.
asked Oct 9, 2014 at 16:42
0
Use difflib:
difflib.get_close_matches[word, ['car', 'animal', 'house', 'animation']]
As you can see from perusing the source, the "close" matches are sorted from best to worst.
>>> import difflib
>>> difflib.get_close_matches['anlmal', ['car', 'animal', 'house', 'animation']]
['animal']
answered Oct 9, 2014 at 16:44
mgilsonmgilson
288k60 gold badges601 silver badges673 bronze badges
1
I checked difflib.get_close_matches[], but it didn't work for me correctly. I write here a robust solution, use as:
closest_match, closest_match_idx = find_closet_match[test_str, list2check]
def find_closet_match[test_str, list2check]:
scores = {}
for ii in list2check:
cnt = 0
if len[test_str]