4

这些看起来很简单,但是我可能无法通过它进行搜索。

我有一个这样的 CSV 文件:

Day,Event,Value
1,"Rent",500
7,"Wage Payments",1000

我希望将“值”列中的所有数字相加。到目前为止,我的代码是这样的:

cr = csv.reader(open("file.csv","rb"))

for row in cr:    
    print row

#print sum(Value)

我怎么能对这个值求和呢?

谢谢你。

4

4 回答 4

10

考虑到文件的第一行csv'Day,Event,Value',您可以使用generator expressionwithsum()

>>> cr = csv.reader(open("file.csv","rb"))
>>> cr.next()
>>> print sum(int(x[2]) for x in cr)
1500
于 2012-05-18T18:40:03.550 回答
3
cr = csv.reader(open("file.csv","rb"))
cr.next() # to skip the header 

total = 0
for row in cr:  
   total += int(row[2])
   # possibly do other things with data/rows 

print total

有更简洁的方法(例如,列表理解或生成器表达式)可以做到这一点,但这提供了基本思想,还允许您根据需要对每一行执行其他操作(正如@MarkRansom 所指出的那样)

于 2012-05-18T18:35:25.977 回答
0

创建一个垃圾值并读取前 2 个值并“丢弃”它们,然后在读取第三个值时将其添加到您的总和中。不要忘记,最初您需要忽略文件的前 3 个值,因为它会获取标题。

于 2012-05-18T18:36:13.010 回答
0

鉴于“值”在第 2 列中,您可以执行以下简单的 for 循环:

value_sum=0
for row in cr:
    value_sum += row[2]

或者,如果您理解它,您可以使用理解:

value_sum = sum([row[2] for row in cr])
于 2012-05-18T18:36:23.363 回答