# [Tutor] calculate the sum of a variable - python

nookasree ponamala nookasree at yahoo.com
Mon Mar 7 04:31:53 CET 2011

```Hi :

I'm a Senior SAS Analyst. I'm trying to learn Python. I would appreciate if anybody could help me with this. It works fine if I give input  instead of reading a text file. I don't understand where I'm going wrong.

I'm trying to read a text file and find out the following:
1. Sum of amt for each id
2. Count of id
3. minimum of date1
4. maximum of date1

Here is the sample text file:

test.txt file:

bin1	cd1	date1	amt	cd    id cd2
452  2       2010-02-20      \$23.26  0	  8100059542        06107
452  2       2010-02-20      \$20.78  0          8100059542        06107
452  2       2010-02-24      \$5.99   2          8100839745        20151
452  2       2010-02-12      \$114.25 7          8100839745        98101
452  2       2010-02-06      \$28.00  0          8101142362        06032
452  2       2010-02-09      \$15.01  0          8100274453        06040
452  18      2010-02-13      \$113.24 0          8100274453        06040
452  2       2010-02-13      \$31.80  0          8100274453        06040

Here is the code I've tried out to calculate sum of amt by id:

import sys
from itertools import groupby
from operator import itemgetter
t = ()
tot = []
for line in open ('test.txt','r'):
aline = line.rstrip().split()
a = aline[5]
b = (aline[3].strip('\$'))
t = (a,b)
t1 = str(t)
tot.append(t1)
print tot
def summary(data, key=itemgetter(0), value=itemgetter(1)):
for k, group in groupby(data, key):
yield (k, sum(value(row) for row in group))

if __name__ == "__main__":
for id, tot_spend in summary(tot, key=itemgetter(0), value=itemgetter(1)):
print id, tot_spend

Error:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 3, in summary
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Thanks,
Sree.

```