我正在制作一个简单的命令行 python 程序,并使用拼写检查器验证用户输入。我早些时候在 SO 上找到了http://norvig.com/spell-correct.html,并使用它来验证我的用户将输入的内容。就我而言,我正在根据 BART 站点列表验证用户输入。用户必须准确输入电台名称,或从拼写检查器处获得建议。这是我正在验证的 BART 车站列表。
Lake Merritt
Daly City
Fruitvale
Coliseum/Oakland Airport
San Leandro
.
.
.
我所做的与我找到的示例代码之间的区别在于,我正在验证多个单词——“Daly City”,而不仅仅是“Fruitvale”。我对正则表达式和 python 不是很好,我试图弄清楚如何阅读每一行,并检查从行首到结尾的所有内容。所以我很难找出一个正则表达式来读取一行中的所有内容。这是我要更改的代码:
def words(text): return re.findall('[a-z]+', text.lower())
其中 text 是示例中使用的大文本文件
我试过
def words(text):
lines=text.split('\n')
return re.search('[a-z]+', lines)
认为这会起作用,因为这(至少对我而言)意味着我在每一行中搜索字符串中至少一个小写字符。但是,我得到了这个
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
我不确定该怎么做。任何人都可以帮忙吗?