难以找到csv文件的总和

时间:2018-10-12 19:36:04

标签: python csv

编写一个名为“ csv_sum”的函数,该函数将一个字符串作为参数来表示CSV文件的名称,该文件具有5列,格式为“ int,int,int,int,int”,并返回其中的所有值的总和输入文件的第四列。 (下面的代码)

import csv
def csv_sum(string):
    with open(string) as f:
        file = csv.reader(f)
        total = 0
        for line in file:
            for number in line[3]:
                total = total + int(number)
    return total

我不断在输入['typically.csv']上报错:int()的无效文字,以10为底的'-'。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

您的问题是

for number in line[3]:

在csv文件中查找负数。 for循环将为负数提供两个字符串,即-4循环'-','4'。因此,对于以10为底的int(),int('-')是无效的文字:

您不需要多余的数字循环。请尝试以下操作:

for line in file:
    total = total + int(line[3]) 

如果您刚刚测试过打印号码,我想您会找到答案的。

答案 1 :(得分:-1)

您当时认为过于复杂,line[3]本身就是价值。 for number in line[3]遍历这些值的各个字符,然后尝试将它们强制转换为int,因为'-'为负数:

def csv_sum(string):
    with open(string) as f:
        file = csv.reader(f)
        total = 0
        for line in file:
            total = total + int(line[3])
    return total

或更短,使用sum

def csv_sum(string):
    with open(string) as f:
        return sum(int(line[3]) for line in csv.reader(f))