如何将CSV文件中的字符串转换为整数并求和
CSV字符串数值转整数并求和的解决方案
问题核心
你的代码仅将CSV中sales列的字符串值存入列表,未做类型转换,直接使用sum()会因类型不匹配报错。以下是修正方案:
基础修正版(保留原代码结构)
import csv # 使用with语句自动管理文件,避免手动关闭 with open('sales.csv', 'r') as filename: file = csv.DictReader(filename) sales = [] for col in file: # 关键:将字符串形式的数值转换为整数 sales.append(int(col['sales'])) # 计算并输出总和 total = sum(sales) print(f"销售总额:{total}")
高效优化版(无需存储列表)
如果CSV数据量较大,直接用生成器表达式求和更节省内存:
import csv with open('sales.csv', 'r') as filename: file = csv.DictReader(filename) # 遍历每行时直接转换并累加,无需存储所有数据 total = sum(int(col['sales']) for col in file) print(f"销售总额:{total}")
异常处理版(应对非数字值)
如果sales列存在空值或非数字字符串,添加异常处理避免程序崩溃:
import csv with open('sales.csv', 'r') as filename: file = csv.DictReader(filename) total = 0 # 记录行号方便定位问题 for line_num, col in enumerate(file, start=1): try: total += int(col['sales']) except ValueError: print(f"第{line_num}行的`sales`值「{col['sales']}」不是有效整数,已跳过") print(f"销售总额:{total}")
关键说明
- 必须用
int()转换:CSV读取的所有值默认是字符串类型,sum()无法直接对字符串求和 with语句是最佳实践:自动关闭文件,避免资源泄漏- 生成器表达式更高效:无需将所有数据加载到内存,适合处理大文件
内容的提问来源于stack exchange,提问作者MrsRJ
相关产品推荐
相关产品推荐

