Python 难以找到csv文件的总和
编写一个名为“csv_sum”的函数,该函数将字符串作为表示csv文件名的参数,该文件有5列,格式为“int,int,int,int,int,int”,并返回输入文件第四列中所有值的总和。(我的代码如下)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
我在输入[]时不断遇到错误:以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])