Lucas
Lucas

Reputation: 6348

Parsing a string representing a float *with an exponent* in Python

I have a large file with numbers in the form of 6,52353753563E-7. So there's an exponent in that string. float() dies on this.

While I could write custom code to pre-process the string into something float() can eat, I'm looking for the pythonic way of converting these into a float (something like a format string passed somewhere). I must say I'm surprised float() can't handle strings with such an exponent, this is pretty common stuff.

I'm using python 2.6, but 3.1 is an option if need be.

Upvotes: 7

Views: 12703

Answers (2)

John Machin
John Machin

Reputation: 82934

Nothing to do with exponent. Problem is comma instead of decimal point.

>>> float("6,52353753563E-7")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 6,52353753563E-7
>>> float("6.52353753563E-7")
6.5235375356299998e-07

For a general approach, see locale.atof()

Upvotes: 15

joaquin
joaquin

Reputation: 85603

Your problem is not in the exponent but in the comma. with python 3.1:

>>> a = "6.52353753563E-7"
>>> float(a)
6.52353753563e-07

Upvotes: 1

Related Questions