float from numbers in text file

GMail Felipe felipe.vinturini at gmail.com
Mon Jun 21 20:10:29 EDT 2010


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

> On Jun 21, 4:18 pm, Stephen Hansen <me+list/pyt... at 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.



More information about the Python-list mailing list