|
Download this file.
Feb 11, 22:38 - David (line 22): I should have included '-' in this.
Feb 15, 17:22 - David (line 35): Should have used a dict instead of a list. Faster.
Feb 23, 16:11 - Ping (line 34): word is a local variable, not a reference to a position within the list. Reassigning the variable can never change the value of something else; it just changes what word refers to.
Please log in if you would like to add comments. | |
| 1 | # David Wallace
| | 2 | # Homework 3.1: check spelling of words in input.txt
| | 3 |
| | 4 | # Unfortunately I didn't find a partner, so
| | 5 | # I wrote 'speling' first, then the checker of 'input.txt'.
| | 6 |
| | 7 | import re
| | 8 |
| | 9 | dictfile = "dict.txt"
| | 10 | dictdata = None
| | 11 |
| | 12 | def correct(word):
| | 13 | """Decide if a word is spelled correctly"""
| | 14 | loaddict()
| | 15 | for dictword in dictdata:
| | 16 | if word == dictword or word.lower() == dictword:
| | 17 | return True
| | 18 | return False
| | 19 |
| | 20 | def split_text_to_words(text):
| | 21 | """Convert string to list of words, ignoring punctuation"""
| | 22 | notword = re.compile("[^a-zA-Z']")
| | 23 | return notword.sub(' ',text).split() # convert non-word chars to spaces
| | 24 |
| | 25 |
| | 26 | # This should be a private function somehow.
| | 27 | def loaddict():
| | 28 | """Read dictionary file into memory, if not already present."""
| | 29 | global dictdata
| | 30 | if not dictdata:
| | 31 | print "loading dictionary..."
| | 32 | file = open(dictfile, 'r')
| | 33 | dictdata = file.readlines()
| | 34 | #for word in dictdata: word = word.strip() # why doesn't this work?
| | 35 | dictdata = [word.strip() for word in dictdata]
| | 36 | file.close() |
|