Python for循环遍历文件统计关键词时计数变量未自增问题
问题根因
你的代码计数失效是几个基础写法错误导致的:
- 变量累加没赋值:Python里单独写
num+1只会算出加1后的结果,不会自动修改原变量的值,你没把结果存回num,它就永远是初始的0,index也是同理。 - 遍历逻辑不对:直接循环文件对象是逐行读取,不是逐单词读取,就算计数修好,一行里出现多次"Shooting"也只会记1次,统计结果不准。
- 打开文件后没有手动关闭,存在文件资源泄漏的风险。
修复后代码
target_word = "Shooting" count = 0 # with语句会自动帮你关闭文件,不用手动写f.close() with open('Information.txt', 'r', encoding='utf-8') as f: # 读取全部文本,按空白字符拆分成单词列表 word_list = f.read().split() for word in word_list: if target_word in word: count += 1 print(f"I Found {target_word}") print(f"'{target_word}' 总共出现了 {count} 次")
可选优化
- 如果要精确匹配独立单词,排除
Shootings这类包含目标字符串的词,可以把判断条件改成if word.strip(".,!?;:'\"()[]") == target_word,会先剔除单词前后附带的标点再做匹配。 - 如果要忽略大小写统计(同时匹配
shooting/SHOOTING等写法),把判断条件改成if target_word.lower() in word.lower()即可。
内容的提问来源于stack exchange,提问作者user19164169
相关产品推荐
相关产品推荐

