You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取txt文件统计商品出现频次结果异常问题排查

问题定位与修复方案

核心问题原因

  • 换行符处理不全:Windows平台下txt文件的换行符为\r\n,你的代码仅移除了\n,残留的不可见字符\r会导致同一商品被识别为两个不同的字典key(比如Spinach和Spinach\r),就出现了乱码+同商品分两次统计的情况,二者数值相加刚好是正确的总频次。
  • 冗余文件关闭操作:使用with open()上下文管理器时,Python会自动在代码块执行完成后关闭文件,手动调用close()属于多余操作,且你在wordFrequency函数的循环内就关闭了文件,首次匹配到目标商品后就会终止后续统计。
  • 计数逻辑错误:wordFrequency函数中的count + 1没有把计算结果赋值给count,计数完全不生效。
  • 多余None输出:displayWordFrequency函数没有返回值,你调用时套了print(),执行完后会额外输出一行None。

修复后的完整代码

App.py

def wordFrequency(item):                                        
    count = 0                                                  
    with open('items.txt', encoding='utf-8') as myfile:
        lines = myfile.readlines()                              
        for line in lines:
            # 直接用strip()移除首尾所有空白字符(包括\r、\n、空格等)
            if line.strip() == item:                        
                count += 1
    return count

# 仅用于展示结果
def displayWordFrequency():
    # 增加encoding参数避免不同平台编码异常
    with open('items.txt', encoding='utf-8') as myfile:
        lines = myfile.readlines()
        freq = {}                                              
        for line in lines:
            item = line.strip()
            # 跳过空行避免被统计
            if not item:
                continue
            if item in freq:                    
                freq[item] += 1                 
            else:
                freq[item] = 1
        for key, value in freq.items():                    
            print(f"{key} - {value}")                      

# 直接调用即可,不用套print
displayWordFrequency()

验证结果

执行修复后的代码,Spinach的输出为Spinach - 5,符合预期,无乱码、无重复条目。

内容的提问来源于stack exchange,提问作者joesalaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:18:02