如何用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]}")
代码说明
- 过滤无效行:先清理掉文件中所有不包含有效数据的行,只留下数字和类型文本。
- 配对数据:过滤后的行是
[数字、类型、数字、类型...]的顺序,通过步长为2的循环,将相邻的数字和类型对应起来。 - 累加求和:对每个类型的数值进行累加,最后按排序后的顺序输出预期格式。
运行结果
Employee: 7 Post: 14
内容的提问来源于stack exchange,提问作者Donepudi Ramadevi
相关产品推荐
相关产品推荐

