Joe
Joe

Reputation: 33

Python Spell Check With Suggestions

I have a program that I'm working on that takes an input and checks it to see if it spelled correctly with a dictionary inside of a file. However, I want to return a suggestion or two as well of what the person means. Any suggestions of how to do this? I have found some modules that can do it, but not for a specific dictionary from a file. Any help is appreciated!!

Here is what I have now:

def getDictionary():
  theDictionary = open("theDictionary.txt", "r")
  dictionaryList = []
  for eachLine in theDictionary:
    splitLines = eachLine.split()
    dictionaryList.append(splitLines[0])
  theDictionary.close()
  return dictionaryList

def spellChecker(theFile, theDictionary):
  lowerItems = theFile.lower()
  wordList = lowerItems.split()
  wrongList = []
  for item in wordList:
    if item not in theDictionary:
        result = False
        wrongList.append(item)

    else:
        result = True
        wrongItem = ""
  return (result, wrongList)

def main():
  theDictionary = getDictionary()
  theText = getFile()
  theInput = input("Input some words here:")
  result, wrongList=spellChecker(theInput,theDictionary)
  if result:
    print("There are no spelling errors in the sentence!  Hooray!")
else:
    if len(wrongList) == 1:
        print('There is a spelling error in the sentence!  The word that is wrong is "' +     str(wrongList) + '".')
    elif len(wrongList) > 1:
        print('There are some spelling errors in the sentence!  The words that are wrong are"' + str(wrongList) + '".')

main()

Upvotes: 2

Views: 1710

Answers (1)

Michał Czapliński
Michał Czapliński

Reputation: 1342

You might want to have a look at the difflib module in the Standard Library. It allows you to do approximate string matching, which seems to be what you want.

It really does not matter if your dictionary is inside a file or not, since you are loading it into a list anyway. Maybe have a look at the get_close_matches() method in the said module.

Upvotes: 3

Related Questions