私は単純なコマンド ライン python プログラムを作成し、ユーザー入力をスペル チェッカーで検証しています。以前に SOでhttp://norvig.com/spell-correct.htmlを見つけ、それを使用してユーザーが入力する内容を検証しています。私の場合、BART ステーションのリストに対してユーザー入力を検証しています。ユーザーはステーションの名前を正確に入力するか、スペル チェッカーから候補を取得する必要があります。これは、私が検証している BART ステーションのリストです。
Lake Merritt
Daly City
Fruitvale
Coliseum/Oakland Airport
San Leandro
.
.
.
私が行っていることと見つけたサンプル コードの違いは、「Fruitvale」だけでなく「Daly City」という複数の単語に対して検証を行っていることです。私は正規表現とPythonが苦手で、各行の読み方を理解し、行の最初から最後まですべてをチェックしようとしています。そのため、1行ですべてを読み取るための正規表現を理解するのに苦労しています。変更しようとしているコードは次のとおりです。
def words(text): return re.findall('[a-z]+', text.lower())
text は、例で使用される大きなテキスト ファイルです。
私は試した
def words(text):
lines=text.split('\n')
return re.search('[a-z]+', lines)
それは(少なくとも私にとっては)文字列内の少なくとも1つの小文字を各行で検索していることを意味するため、うまくいくと考えています。しかし、これを取り戻しました
Traceback (most recent call last):
File "spell.py", line 15, in <module>
NWORDS = train(words(file('stations.txt').read()))
File "spell.py", line 6, in words
return re.search('[a-z]+', lines)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 142, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
これを行う方法がよくわかりません。誰でも助けることができますか?