Python 难以找到csv文件的总和

Python 难以找到csv文件的总和,python,csv,Python,Csv,编写一个名为“csv_sum”的函数,该函数将字符串作为表示csv文件名的参数,该文件有5列,格式为“int,int,int,int,int,int”,并返回输入文件第四列中所有值的总和。(我的代码如下) 我在输入[]时不断遇到错误:以10为基数的int()的文本无效:'-'。我做错了什么?您的想法太复杂了,行[3]是值本身迭代这些值的各个字符,并尝试将它们强制转换为int,对于负数的'-',则失败: def csv_sum(string): with open(string) as f

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


我在输入[]时不断遇到错误:以10为基数的int()的文本无效:'-'。我做错了什么?

您的想法太复杂了,
行[3]
是值本身<第[3]行中数字的code>迭代这些值的各个字符,并尝试将它们强制转换为
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
或更短,使用
求和

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

for number in line[3]:
在csv文件中查找负数。for循环将为负数提供两个字符串,即-4循环'-',4'。因此,int('-')对于基数为10:'-'的int()来说是无效的文本

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

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

如果您刚刚使用print number进行了测试,我想您会找到答案。

提供csv文件的示例。我做错了什么?:打印
行以查看您得到了什么。然后打印数字。我应该如何继续解决此问题?您正在尝试转换行中位置3处的字符,破折号
-
int
,python无法解释
for line in file:
    total = total + int(line[3])