Skip to main content
 首页 » 编程设计

python之在python中解析单词列表

2025年05月04日10kevingrace

我有一个 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 倍。如果您正在寻找第一个单词,它仍然稍微快一些甚至。