如何读取文本文件特定单词?Python程序输出仅为"1"的原因排查
嘿,我来帮你定位问题所在~
问题根源分析
你现在代码只输出"1",核心是两个关键逻辑错误导致的:
1. 变量名冲突覆盖了目标单词
你一开始定义了entry = "PMID",但后面循环里写了for entry in file.readlines()——这时候循环变量entry会直接覆盖你原本的目标单词变量,变成每一行的文本内容,等于完全没在检查你要找的"PMID"。
2. 循环逻辑是统计行数,而非特定单词出现次数
当前代码的逻辑是:遍历文件的每一行,每遍历一行就给accumulator加1,所以它实际统计的是文件的总行数,而非"PMID"的出现次数。如果你的文件刚好只有1行,自然就输出1了。
修正后的代码
这里给你调整好的代码,解决了上述问题:
import os openfile = input('Enter the input file: ') accumulator = 0 target_word = "PMID" # 换个不会冲突的变量名 if os.path.isfile(openfile): with open(openfile, 'r') as file: # 用with语句自动管理文件关闭,更安全规范 for line in file.readlines(): # 统计当前行里目标单词的出现次数,累加到总计数器 accumulator += line.count(target_word) print('there are:', accumulator) else: print('Input file not found.') print('Please check the file name or the location of your input file.')
优化说明
- 把目标单词的变量名改成
target_word,彻底避免变量冲突; - 用
with语句打开文件,无需手动调用close(),防止资源泄漏; - 通过
line.count(target_word)精准统计每行中"PMID"的出现次数,再累加得到全局总数。
内容的提问来源于stack exchange,提问作者papara
相关产品推荐
相关产品推荐

