Reputation: 6348
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
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
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