如何读取txt文件中单词并逐一输出同义词,解决现有代码运行异常问题
同义词查询代码修复方案
问题根因
- 原代码仅调用1次
f.readline(),只能读取文件第一行内容,无法处理后续的hot、cool两个单词 readline()方法读取的行内容默认末尾携带换行符\n,当word.txt存在多行内容时,第一行读取结果为good\n,wordnet无法匹配到带特殊字符的单词,因此返回空集合set();仅保留good单个单词且文件末尾无换行时,读取内容无多余字符,所以可以正常运行- 原代码中打开的文件名为
filename,和实际存储单词的word.txt不匹配,也会导致读取失败
修复后代码
import nltk from nltk.corpus import wordnet # 首次运行缺wordnet资源时,取消注释下行执行一次即可 # nltk.download('wordnet') # 用with上下文管理器自动管理文件句柄,避免资源泄漏 with open('word.txt', 'r', encoding='utf-8') as f: # 遍历文件所有行 for line in f: # 去除行首尾空白字符(换行符、空格、制表符等) word = line.strip() # 跳过空行 if not word: continue synonyms = [] for syn in wordnet.synsets(word): for l in syn.lemmas(): synonyms.append(l.name()) # 单独输出每个单词对应的同义词 print(f"单词 {word} 的同义词:", set(synonyms))
运行说明
- 代码会自动读取word.txt中全部3个单词,分别查询同义词后独立输出,不会出现内容混淆
- 自动过滤空行和多余空白字符,无需手动调整word.txt的格式
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

