在Python中遍历CSV文件的难点

时间:2018-09-09 00:37:24

标签: python python-3.x csv

我正在尝试使用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。

任何帮助将不胜感激。

4 个答案:

答案 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)
  1. 总计应移至for循环之外。
  2. 缩进在Python中很重要。例如。导入线应推到最左侧。

答案 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)