编写一个名为“ 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为底的'-'。我在做什么错了?
答案 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))