如何用Python对CSV文件Code列分号左侧数值求和?
解决CSV中Code列分号左侧数值求和的问题
你的错误根源是直接删除分号后将整个字符串转为整数,这会把分号左右的数字拼接成一个数(比如19;90变成1990),正确做法是按分号拆分字符串,只提取左侧部分再转成整数计算。
方法一:用Python内置csv模块(无需额外安装)
适合新手理解基础文件读取逻辑:
import csv total = 0 left_numbers = [] # 替换为你的CSV文件路径 with open('your_file.csv', 'r') as file: # 处理多空格分隔的CSV,过滤空列名 reader = csv.DictReader(file, delimiter=' ') reader.fieldnames = [name for name in reader.fieldnames if name] for row in reader: # 拆分Code列,取分号左侧内容并转整数 code_left = row['Code'].split(';')[0].strip() num = int(code_left) left_numbers.append(str(num)) total += num # 按期望格式输出 print(f"{' + '.join(left_numbers)} = {total}")
方法二:用pandas(更简洁,适合数据处理场景)
如果已安装pandas,代码会更紧凑:
import pandas as pd # 读取多空格分隔的CSV df = pd.read_csv('your_file.csv', delim_whitespace=True) # 拆分Code列,提取左侧数值并转整数 df['code_left'] = df['Code'].str.split(';').str[0].astype(int) # 计算总和并整理输出格式 total = df['code_left'].sum() left_numbers = df['code_left'].astype(str).tolist() print(f"{' + '.join(left_numbers)} = {total}")
运行任意一种代码,都会输出:19 + 20 + 30 = 69,符合你的预期。
内容的提问来源于stack exchange,提问作者Jacket
相关产品推荐
相关产品推荐

