Bullet proof passing numeric values from NMEA data stream.
Steve Holden
steve at holdenweb.com
Tue Mar 20 08:38:03 EDT 2007
Doug Gray wrote:
> Folks,
> I am looking for a fast but most importantly a bullet proof method to pass
> and NMEA data stream (GPS output) ascii numeric strings. The best I can
> offer is:
>
> def fint(a):
> try: return int(float(a))
> except: return 0
>
> The reason for this is the quality of the data from the huge variety of
> GPS units available varies considerably. Some units do not follow the
> standard and I want to pass the data as best I can without hanging the
> code for an oddball data value.
>
> Can anyone suggest better?
>
> For example, each of the following throw the exception so do not return
> the correct value:
>
> int('00.')
> int(' 00.')
> float('- 00')
> float(' - 00')
> float(' - 00')
> float(' - 00.')
> float('- 00.')
> float('- 10.')
> float('- 10.')
> float('- 10.')
> int('- 10.')
> int('- 10.')
> float('- 10.')
> int('1.0')
>
> Also, why should I consider the string module? Is it faster/better?
>
> TIA,
> Doug
Try something like
def fint(s):
return float(s.replace(" ", ""))
I really don't think it's a good idea to silently ignore conversion
errors in GPS positioning.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
Recent Ramblings http://holdenweb.blogspot.com
More information about the Python-list
mailing list