From: GMail Felipe on

On 21/06/2010, at 20:26, davidgp <davidvanijzendoorn(a)gmail.com> wrote:

> On Jun 21, 4:18 pm, Stephen Hansen <me+list/pyt...(a)ixokai.io> wrote:
>> On 6/21/10 4:03 PM, davidgp wrote:
>>
>>
>>
>>> sorry :)
>>
>> Okay, I should be more specific: include full tracebacks and some
>> real
>> copied and pasted code :) Don't throw away nice debugging information
>> Python gave you, feed it to us.
>>
>>> invalid literal for long() with base 10: '51.9449702'
>>> this is the error i'm getting when i use long(line)
>>
>> Yes, "51.9449702" is an invalid literal for long. Long produces
>> integers: no decimal points.
>>
>> However:
>>
>>> and this is the error for float(line)
>>> invalid literal for float(): not found
>>
>> Its a perfectly valid literal for float:>>> float('51.9449702')
>>
>> 51.9449702
>>
>> So if you're getting that error, you're doing something else that
>> you're
>> not telling us.
>>
>> I suspect, somehow (I'd have to see your code to be sure), that your
>> "line" in the second case doesn't have that number. Try it in the
>> interactive interpreter. float('51.9449702') works fine. I suspect
>> your
>> "line", for whatever reason, contains the string "not found", as in:
>>
>>>>> float('not found')
>>
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in <module>
>> ValueError: invalid literal for float(): not found
>>
>> --
>>
>> Stephen Hansen
>> ... Also: Ixokai
>> ... Mail: me+list/python (AT) ixokai (DOT) io
>> ... Blog:http://meh.ixokai.io/
>>
>> signature.asc
>> < 1KViewDownload
>
> ah, i see :P
> float("45.34") or whatever does work fine, but the problem is that i'm
> reading it from a text file. so somehow it is not a real string or
> whatever..
> here's a part of the code:
> f = open ('/home/david/out.txt', 'r')
>
> for line in f:
> if tel ==6:
> buf = line.replace('\n', '')
> lat = float(buf)
> if tel ==7:
> buf = line.replace('\n', '')
> lng = float(buf)
>
> basically it goes wrong in the last part where i try to convert the
> line to a float..
> i'm 100% sure that it's getting a number, not a text string
>
> cheers!
>
> --
> http://mail.python.org/mailman/listinfo/python-list

Ok! Just to be sure, execute the following in your <out> file:

egrep -in 'not found' <out>

If it finds something, it will return the line number and what was
found!

Felipe.
From: Stephen Hansen on
On 6/21/10 4:26 PM, davidgp wrote:
> ah, i see :P
> float("45.34") or whatever does work fine, but the problem is that i'm
> reading it from a text file. so somehow it is not a real string or
> whatever..
> here's a part of the code:
> f = open ('/home/david/out.txt', 'r')
>
> for line in f:
> if tel ==6:
> buf = line.replace('\n', '')
> lat = float(buf)
> if tel ==7:
> buf = line.replace('\n', '')
> lng = float(buf)
>
> basically it goes wrong in the last part where i try to convert the
> line to a float..
> i'm 100% sure that it's getting a number, not a text string
>

First: you don't have to strip \n's. Try float("45.43\n")

Second: this code, as is, can't run to show us the problem because
there's this "tel" business and I don't know what it is. But I'll tweak
it a bit and:

f = open ('/Users/ixokai/out.txt', 'r')

tel = 6
for line in f:
if tel == 6:
buf = line.replace('\n', '')
lat = float(buf)
print lat
if tel == 7:
buf = line.replace('\n', '')
lng = float(buf)

And it works fine with a dummy data file I have. So... the problem is
somewhere else. Its either in your data file, or some other logic going
on (maybe something related to this 'tel' thing, I don't know).

Are you sure there's no lines in out.txt which have, say, some text (on
the left end)? Or maybe some blank lines?

Maybe you should send the whole file and the data.txt if you don't see
where the problem is.

--

Stephen Hansen
... Also: Ixokai
... Mail: me+list/python (AT) ixokai (DOT) io
... Blog: http://meh.ixokai.io/

From: davidgp on
On Jun 21, 5:13 pm, Stephen Hansen <me+list/pyt...(a)ixokai.io> wrote:
> On 6/21/10 4:26 PM, davidgp wrote:
>
>
>
>
>
> > ah, i see :P
> > float("45.34") or whatever does work fine, but the problem is that i'm
> > reading it from a text file. so somehow it is not a real string or
> > whatever..
> > here's a part of the code:
> > f = open ('/home/david/out.txt', 'r')
>
> > for line in f:
> > if tel ==6:
> >                    buf = line.replace('\n', '')
> >                    lat = float(buf)
> >            if tel ==7:
> >                    buf = line.replace('\n', '')
> >                    lng = float(buf)
>
> > basically it goes wrong in the last part where i try to convert the
> > line to a float..
> > i'm 100% sure that it's getting a number, not a text string
>
> First: you don't have to strip \n's. Try float("45.43\n")
>
> Second: this code, as is, can't run to show us the problem because
> there's this "tel" business and I don't know what it is. But I'll tweak
> it a bit and:
>
>   f = open ('/Users/ixokai/out.txt', 'r')
>
>   tel = 6
>   for line in f:
>      if tel == 6:
>         buf = line.replace('\n', '')
>         lat = float(buf)
>         print lat
>      if tel == 7:
>         buf = line.replace('\n', '')
>         lng = float(buf)
>
> And it works fine with a dummy data file I have. So... the problem is
> somewhere else. Its either in your data file, or some other logic going
> on (maybe something related to this 'tel' thing, I don't know).
>
> Are you sure there's no lines in out.txt which have, say, some text (on
> the left end)? Or maybe some blank lines?
>
> Maybe you should send the whole file and the data.txt if you don't see
> where the problem is.
>
> --
>
>    Stephen Hansen
>    ... Also: Ixokai
>    ... Mail: me+list/python (AT) ixokai (DOT) io
>    ... Blog:http://meh.ixokai.io/
>
>  signature.asc
> < 1KViewDownload

i found the error! apparently something was going wrong in the loop..
thanks for the help!