I am trying to read a Fortran double-precision number like 1.2345D+02 into python, but I got the following error:
>>> float('1.2345D+02')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 1.2345D+02
By following the advice on Python scientific notation using D instead of E, I tried numpy but I also get the same error:
import numpy
>>> numpy.float("1.2345D+02")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for float(): 1.2345D+02
Is there a solution in Python to read those double precision numbers without just changing the 'D' to 'E'?
EDIT: I replaced a bad syntax on the strings. But still I get errors.
The substitution can be made a bit more careful by using a regular expression:
Or if you have a list of strings (lines) read from a file using
readlines()
:What's wrong with
float(str.replace("D", "E"))
?Please note, numpy DOES support fortran notation:
numpy.float("1.2345D+02")
.You seem to have some deeper purpose, perhaps shedding light on it would help.