<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Thanks for the reply Wayne, but still it is not working,</DIV>
<DIV>&nbsp;</DIV>
<DIV>when I used int It throws the below error:</DIV>
<DIV>&nbsp; File "&lt;stdin&gt;", line 2, in &lt;module&gt;<BR>&nbsp; File "&lt;stdin&gt;", line 3, in summary<BR>&nbsp; File "&lt;stdin&gt;", line 3, in &lt;genexpr&gt;<BR>ValueError: invalid literal for int() with base 10: "'"</DIV>
<DIV>&nbsp;</DIV>
<DIV>I tried using float and the error is:</DIV>
<DIV>Traceback (most recent call last):<BR>&nbsp; File "&lt;stdin&gt;", line 2, in &lt;module&gt;<BR>&nbsp; File "&lt;stdin&gt;", line 3, in summary<BR>&nbsp; File "&lt;stdin&gt;", line 3, in &lt;genexpr&gt;<BR>ValueError: invalid literal for float(): '</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks,</DIV>
<DIV>Sree.<BR><BR><BR>--- On <B>Mon, 3/7/11, Wayne Werner <I>&lt;waynejwerner@gmail.com&gt;</I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid"><BR>From: Wayne Werner &lt;waynejwerner@gmail.com&gt;<BR>Subject: Re: [Tutor] calculate the sum of a variable - python<BR>To: "nookasree ponamala" &lt;nookasree@yahoo.com&gt;<BR>Cc: tutor@python.org<BR>Date: Monday, March 7, 2011, 9:14 AM<BR><BR>
<DIV id=yiv876852008><BR><BR>
<DIV class=yiv876852008gmail_quote>On Sun, Mar 6, 2011 at 9:31 PM, nookasree ponamala <SPAN dir=ltr>&lt;<A href="http://us.mc654.mail.yahoo.com/mc/compose?to=nookasree@yahoo.com" target=_blank rel=nofollow ymailto="mailto:nookasree@yahoo.com">nookasree@yahoo.com</A>&gt;</SPAN> wrote:<BR>
<BLOCKQUOTE class=yiv876852008gmail_quote style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hi :<BR><BR>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 &nbsp;instead of reading a text file. I don't understand where I'm going wrong.<BR><BR>I'm trying to read a text file and find out the following:<BR>1. Sum of amt for each id<BR>2. Count of id<BR>3. minimum of date1<BR>4. maximum of date1<BR><BR>Here is the sample text file:<BR><BR>test.txt file:<BR><BR>bin1 &nbsp; &nbsp;cd1 &nbsp; &nbsp; date1 &nbsp; amt &nbsp; &nbsp; cd &nbsp; &nbsp;id cd2<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-20 &nbsp; &nbsp; &nbsp;$23.26 &nbsp;0 &nbsp; &nbsp;8100059542 &nbsp; &nbsp; &nbsp; &nbsp;06107<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-20 &nbsp; &nbsp; &nbsp;$20.78 &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100059542 &nbsp; &nbsp; &nbsp;
 &nbsp;06107<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-24 &nbsp; &nbsp; &nbsp;$5.99 &nbsp; 2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100839745 &nbsp; &nbsp; &nbsp; &nbsp;20151<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-12 &nbsp; &nbsp; &nbsp;$114.25 7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100839745 &nbsp; &nbsp; &nbsp; &nbsp;98101<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-06 &nbsp; &nbsp; &nbsp;$28.00 &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8101142362 &nbsp; &nbsp; &nbsp; &nbsp;06032<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-09 &nbsp; &nbsp; &nbsp;$15.01 &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100274453 &nbsp; &nbsp; &nbsp; &nbsp;06040<BR>452 &nbsp;18 &nbsp; &nbsp; &nbsp;2010-02-13 &nbsp; &nbsp; &nbsp;$113.24 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100274453 &nbsp; &nbsp; &nbsp; &nbsp;06040<BR>452 &nbsp;2 &nbsp; &nbsp; &nbsp; 2010-02-13 &nbsp; &nbsp; &nbsp;$31.80 &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8100274453 &nbsp; &nbsp; &nbsp;
 &nbsp;06040<BR><BR><BR>Here is the code I've tried out to calculate sum of amt by id:<BR><BR>import sys<BR>from itertools import groupby<BR>from operator import itemgetter<BR>t = ()<BR>tot = []<BR>for line in open ('test.txt','r'):<BR>&nbsp; &nbsp; &nbsp; &nbsp;aline = line.rstrip().split()<BR>&nbsp; &nbsp; &nbsp; &nbsp;a = aline[5]<BR>&nbsp; &nbsp; &nbsp; &nbsp;b = (aline[3].strip('$'))<BR>&nbsp; &nbsp; &nbsp; &nbsp;t = (a,b)<BR>&nbsp; &nbsp; &nbsp; &nbsp;t1 = str(t)<BR>&nbsp; &nbsp; &nbsp; &nbsp;tot.append(t1)<BR>&nbsp; &nbsp; &nbsp; &nbsp;print tot<BR>def summary(data, key=itemgetter(0), value=itemgetter(1)):<BR>&nbsp; &nbsp; &nbsp; &nbsp;for k, group in groupby(data, key):<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;yield (k, sum(value(row) for row in group))<BR><BR>if __name__ == "__main__":<BR>&nbsp; &nbsp; &nbsp; &nbsp;for id, tot_spend in summary(tot, key=itemgetter(0), value=itemgetter(1)):<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp;print id, tot_spend<BR><BR><BR>Error:<BR>Traceback (most recent call last):<BR>&nbsp;File "&lt;stdin&gt;", line 2, in &lt;module&gt;<BR>&nbsp;File "&lt;stdin&gt;", line 3, in summary<BR>TypeError: unsupported operand type(s) for +: 'int' and 'str'<BR></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>Of course I first have to commend you for including the full traceback with the code because it makes this entirely easy to answer.</DIV>
<DIV><BR></DIV>
<DIV>In general, the traceback tells you the most important stuff last, so I'll start with this line:&nbsp;</DIV>
<DIV><BR>&gt; TypeError: unsupported operand type(s) for +: 'int' and 'str'</DIV>
<DIV><BR></DIV>
<DIV>That tells us that the problem is you are trying to use + (addition) on an integer and a string - which you can't do because of the type mismatch (TypeError).</DIV>
<DIV><BR></DIV>
<DIV>The next line</DIV>
<DIV><BR></DIV>
<DIV>&gt; File "&lt;stdin&gt;", line 3, in summary</DIV>
<DIV><BR></DIV>
<DIV>tells us that the error occurred on line3 in summary:</DIV>
<DIV><BR></DIV>
<DIV>1 | def summary(data, key=itemgetter(0), value=itemgetter(1)):<BR>2 | &nbsp; &nbsp; &nbsp; &nbsp;for k, group in groupby(data, key):<BR>3 | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;yield (k, sum(value(row) for row in group))</DIV>
<DIV><BR></DIV>
<DIV>Well, there's no '+', but you do have 'sum', which uses addition under the hood. So how do you go about fixing it? Well, you change the value getting passed to sum to an integer (or other number):</DIV>
<DIV><BR></DIV>
<DIV>sum(int(value(row)) for row in group)</DIV>
<DIV><BR></DIV>
<DIV>Should either fix your problem, or throw a differen error if you try to convert a string like 'Hello' to an integer. (Alternatively, use float if you're interested in decimals)</DIV>
<DIV><BR></DIV>
<DIV>HTH,</DIV>
<DIV>Wayne</DIV></DIV></DIV></BLOCKQUOTE></td></tr></table><br>