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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:12:55