Simple Spellchecker
This utility provides a simple command-line spellchecker using the pyspellchecker library. It can identify misspelled words in a text string or file and suggest corrections.
Modules Used:
pyspellchecker: To check spelling and generate candidates.- argparse: To handle command-line arguments.
re: To tokenize text (split into words).
Installation
pip install pyspellchecker
The Code
Save this as spellcheck.py.
from spellchecker import SpellChecker
import argparse
import re
import os
def check_spelling(text, language='en'):
try:
spell = SpellChecker(language=language)
except ValueError:
print(f"Error: Language '{language}' not supported.")
return
# Find words using regex to avoid punctuation issues
# This regex matches words with apostrophes (e.g., "don't")
words = re.findall(r"[a-zA-Z']+", text)
# Find those that may be misspelled
misspelled = spell.unknown(words)
if not misspelled:
print("No misspelled words found!")
return
print(f"Found {len(misspelled)} potential misspellings:\n")
print(f"{'Word':<20} {'Suggestion':<20}")
print("-" * 40)
for word in misspelled:
# Get the one `most likely` answer
correction = spell.correction(word)
# Handle case where correction might be None
if correction is None:
correction = "(No suggestion)"
print(f"{word:<20} {correction:<20}")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Simple Spellchecker")
parser.add_argument("input", help="Text to check OR path to a text file")
parser.add_argument("-l", "--lang", default="en", help="Language code (default: en)")
args = parser.parse_args()
# Check if input is a file path
text_data = args.input
if os.path.isfile(args.input):
try:
with open(args.input, 'r', encoding='utf-8') as f:
text_data = f.read()
print(f"Checking file: {args.input}...")
except Exception as e:
print(f"Error reading file: {e}")
exit(1)
check_spelling(text_data, args.lang)
Usage
# Check a sentence
python spellcheck.py "This is a sentance with some erors."
# Check a file
python spellcheck.py document.txt