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

如何用Python对TXT文件中同键值求和?解决ValueError报错

问题分析与修复

错误原因

你遇到的ValueError是因为原代码错误假设所有行都是「名称 数值」的格式,但实际文件中存在大量无关行(标题、分隔线、单独的|、空行),这些行用split()拆分后无法得到2个元素,导致解包失败。

另外你的代码还有3处语法错误:

  • With 需小写为 with(Python关键字区分大小写)
  • for line in map(str.strip, f_in) 末尾缺少冒号 :
  • Print 需小写为 print

修正代码

data = {'Employee': 0, 'Post': 0}
with open('new.txt', 'r') as f_in:
    valid_lines = []
    # 过滤无效行,只保留数字和类型文本
    for line in map(str.strip, f_in):
        if not line:
            continue
        # 跳过标题、分隔线、单独的|符号行
        if '**' in line or '--|--' in line or line == '|':
            continue
        valid_lines.append(line)
    
    # 有效行按「数字、类型」交替排列,两两配对处理
    for idx in range(0, len(valid_lines), 2):
        count = int(valid_lines[idx])
        category = valid_lines[idx + 1]
        if category in data:
            data[category] += count

# 按要求格式输出结果
for category in sorted(data):
    print(f"{category}: {data[category]}")

代码说明

  1. 过滤无效行:先清理掉文件中所有不包含有效数据的行,只留下数字和类型文本。
  2. 配对数据:过滤后的行是[数字、类型、数字、类型...]的顺序,通过步长为2的循环,将相邻的数字和类型对应起来。
  3. 累加求和:对每个类型的数值进行累加,最后按排序后的顺序输出预期格式。

运行结果

Employee: 7
Post: 14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:50:29