基于csv模块实现Python函数计算CSV指定列数值总和
用csv模块计算CSV指定列的数值总和
原代码存在多处逻辑问题,以下是修正后的可运行实现:
import csv def calculate_column_sum(file_path, column_name): total = 0 with open(file_path, 'r', newline='', encoding='utf-8') as f: reader = csv.DictReader(f) # 先校验指定列是否存在 if column_name not in reader.fieldnames: raise ValueError(f"CSV文件中不存在列名: {column_name}") for row in reader: # 处理非数值内容的异常情况 try: value = float(row[column_name]) total += value except ValueError: print(f"警告:行中列{column_name}的内容'{row[column_name]}'不是有效数值,已跳过") return total # 示例调用 target_column = 'salary' csv_file = 'test.csv' sum_result = calculate_column_sum(csv_file, target_column) print(f"列{target_column}的数值总和为: {sum_result}")
核心修改说明:
- 函数名改为
calculate_column_sum,避免和Python内置sum函数重名导致冲突 - 初始化
total变量用于累加总和,解决原代码无累加载体的问题 - 增加列名存在性校验,提前抛出错误避免后续无效读取
- 将读取到的字符串列值转为
float类型(兼容整数和小数),解决原代码直接对字符串求和的错误 - 增加异常处理,跳过非数值内容并给出提示,提升代码健壮性
- 最终返回总和后统一打印,替代原代码循环内重复打印的错误逻辑
内容的提问来源于stack exchange,提问作者comiser
相关产品推荐
相关产品推荐

