我有一个 wlist.txt 文件,其中包含大约 58k 个英语单词,其中的一小段摘录如下所示:
aardvark
aardwolf
aaron
aback
abacus
abaft
abalone
abandon
abandoned
abandonment
abandons
abase
abased
abasement
我想做的是让一个程序搜索列表并查看列表中是否包含一个单词,如果包含则打印该单词。我的问题是我写的代码会不断返回不,这个词不在列表中,当我确定它在列表中时。我的代码看起来像这样,有人注意到任何错误吗?
match = 'aardvark'
f = 'wlist.txt'
success = False
try:
for word in open(f):
if word == match:
success = True
break
except IOError:
print f, "not found!"
if success:
print "The word has been found with a value of", word
else:
print "Word not found"
先谢谢大家!!
请您参考如下方法:
正如其他人已经说过的,您的问题源于这样一个事实,即换行符是您正在阅读的单词的一部分。摆脱这些的最佳方法是使用 strip() str 的方法。
此外,您的代码做的事情太多,无法完成一项简单的任务。您需要做的就是从您的单词列表构建一个集合,然后在该集合中查找您的单词出现的次数。对于此任务,set 比 list 好得多,因为检查 set 中元素的出现是很多 更快。所以这样的事情应该可行。
try:
with open('wordlist.txt', 'rU') as infile:
wordSet = set(line.strip() for line in infile)
except IOError:
print 'error opening file'
aWord = 'aardvark'
if aWord in wordSet:
print 'found word', aWord
else:
print 'word not found'
注意:如果 wordSet 中的 aWord 如此快得多,这并不好笑。如果您要查找靠近单词列表末尾的单词,对于 267000 个单词列表,set 快将近 60000 倍。如果您正在寻找第一个单词,它仍然稍微快一些甚至。
