How to match words as if in a dictionary, based on len-1 or len+1? Python

Posted by pearbear on Stack Overflow See other posts from Stack Overflow or by pearbear
Published on 2012-11-14T04:57:23Z Indexed on 2012/11/14 4:59 UTC
Read the original article Hit count: 148

Filed under:
|
|

If I have a word 'raqd', how would I use python to have a spellcheck, so to speak, to find the word 'rad' as an option in 'spellcheck'? What I've been trying to do is this:

def isbettermatch(keysplit, searchword):
    i = 0
    trues = 0
    falses = 0

    lensearchwords = len(searchword)

    keysplits = copy.deepcopy(keysplit)
    searchwords = copy.deepcopy(searchword)
    #print keysplit, searchwords
    if len(keysplits)  == len(searchwords)-1:
        i = 0
        while i < len(keysplits):
            j = 0
            while j < lensearchwords:
                if keysplits[i] == searchwords[j]:
                    trues +=1
                    searchwords.pop(j)
                    lensearchwords = len(searchwords)
                elif keysplits[i] != searchwords[j]:
                    falses +=1
                j +=1
            i +=1
        if trues >= len(searchwords)-1:
            #print "-------------------------------------------------------", keysplits
            return True            

keysplit is a list like ['s', 'p', 'o', 'i', 'l'] for example, and the searchword would be a list ['r', 'a', 'q', 'd'].

If the function returns True, then it would print the keyword that matches. Ex. 'rad', for the searchword 'raqd'.

I need to find all possible matches for the searchword with a single letter addition or deletion.

so ex. 'raqd' would have an option to be 'rad', and 'poted' could be 'posted' or 'potted'.

Above is what I have tried, but it is not working well at all. Help much appreciated!

© Stack Overflow or respective owner

Related posts about python

Related posts about list