我正在尝试使用Python将CSV文件中给定行中的所有值相加,但是这样做有很多困难。
这是我最近来过的地方:
from csv import reader
with open("simpleData.csv") as file:
csv_reader = reader(file)
for row in csv_reader:
total = 0
total = total + int(row[1])
print(total)
最终的打印语句不是产生row [1]中所有值的总和,而是仅产生行中的最后一个数字。我在做什么错了?
我也迷失了绕过标头(我在其他示例中广泛使用的next()似乎来自Python 2,并且该方法在P3中不再有效),所以我只是手动,将该列的标题临时更改为0。
任何帮助将不胜感激。
答案 0 :(得分:2)
似乎您每次迭代都将total
变量重置为零。
要解决此问题,请将变量初始化移到for
循环之外,以使其仅发生一次:
total = 0
for row in csv_reader:
total = total + int(row[1])
答案 1 :(得分:0)
from csv import reader
with open("simpleData.csv") as file:
csv_reader = reader(file)
total = 0
for row in csv_reader:
total = total + int(row[1])
print(total)
答案 2 :(得分:0)
您要重置总计,请尝试以下操作:
from csv import reader
with open("simpleData.csv") as file:
csv_reader = reader(file)
total = 0
for row in csv_reader:
total = total + int(row[1])
print(total)
答案 3 :(得分:0)
正如其他人已经指出的那样,您将在每次迭代中设置total
的值。您可以将total = 0
移出循环,也可以使用sum
:
from csv import reader
with open("simpleData.csv") as file:
csv_reader = reader(file)
total = sum(int(x[0]) for x in csv_reader)
print(total)