简体   繁体   中英

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.

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()

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM