Python循环与条件语句问题:无法统计CSV文件中指定单词次数
解决Python原生统计CSV指定列中单词出现次数的问题
原代码的核心问题
- 错误复用计数器变量:你把初始值为0的
loveCount直接赋值为歌曲标题字符串,彻底破坏了计数器的功能,后续的+=1操作逻辑完全错误 - 未拆分歌曲标题的单词:仅判断整个标题是否等于'love',无法统计标题中多次出现的'love'(比如第三行的四个'love')
- 大小写判断逻辑失效:虽然把标题转成了小写,但判断时仍用原字符串,没利用转小写后的结果实现不区分大小写的统计
修正后的代码
# 初始化计数器,用下划线命名更符合Python规范 love_count = 0 # 使用with语句安全打开文件,自动处理关闭 with open("love.csv", "r") as file: # 跳过表头行 next(file) # 遍历文件每一行数据 for line in file: # 去除换行符,按逗号分割成列列表 line_list = line.strip("\n").split(",") # 获取第三列(索引2)的歌曲标题,统一转小写 song_title = line_list[2].lower() # 按空格拆分标题为单个单词列表 words = song_title.split() # 遍历每个单词,统计'love'的出现次数 for word in words: if word == 'love': love_count += 1 # 输出最终统计结果 print(f"'love'出现的总次数: {love_count}")
关键修正点说明
with open(...):替代直接open(),无需手动关闭文件,避免资源泄漏next(file):跳过CSV的表头行,防止统计无关内容- 双层循环:外层遍历CSV行,内层遍历歌曲标题的每个单词,确保每一个'love'都被计数
- 统一转小写:将歌曲标题转为小写后再判断,实现不区分大小写的统计(比如'Love'、'LOVE'都会被识别)
运行以上代码,针对你的测试CSV数据,会输出'love'出现的总次数: 6,对应第二行1次、第三行4次、第一行歌曲标题里的1次,统计结果正确。
内容的提问来源于stack exchange,提问作者Aaron Lefler
相关产品推荐
相关产品推荐

