>From the virtual desk of Lowell Tackett  


--- On Fri, 1/8/10, Kent Johnson <ken...@tds.net> wrote:

> From: Kent Johnson <ken...@tds.net>
> Subject: Re: [Tutor] manipulting CSV files
> To: "Lowell Tackett" <lowelltack...@yahoo.com>
> Cc: "tutor" <Tutor@python.org>
> Date: Friday, January 8, 2010, 8:11 AM
> On Thu, Jan 7, 2010 at 1:26 PM,
> Lowell Tackett <lowelltack...@yahoo.com>
> wrote:
> > I found the Python documentation (on line} and came
> across--'csv.Dialect.skipinitialspace' 
> Try
> coord = csv.reader(open('true_coord', 'b'),
> skipinitialspace = True)
> 
> Note you should open the file in binary mode.
> 
> Kent
> 
I'm guessing the 'b' in the above code line refers to your recommendation to 
enlist binary mode.  Here's what Python thought of it:

>>> coord = csv.reader(open('true_coord', 'b'), skipinitialspace = True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'b'

So, I put an 'r' in front of 'b', and it worked fine.

Now, perhaps you can you shed some light on this problem--I'm trying to do some 
simple arithmetic with two of the retrieved values, and get this error:

>>> coord = csv.reader(open('true_coord', 'rb'), skipinitialspace = True)
>>> for line in coord:
....  if line[0] == '1001':
....   print line
....
['1001', '342821.71900', '679492.08300', '0.00000', '']
....   print (int(line[1]) + int(line[2]))
....
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
ValueError: invalid literal for int() with base 10: '342821.71900'

I tried:

....   print (line[1]) + (line[2])

But of course it did nothing but cat the two sequences.



      

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to