Python usando la notación científica en lugar de D E
-
21-09-2019 - |
Pregunta
Algunas archivo de resultados producidos por los programas Fortran informar los números de precisión doble (en notación científica) utilizando el D
carta en lugar de E
, por ejemplo:
1.2345D+02
# instead of
1.2345E+02
necesito para procesar enormes cantidades de datos utilizando Python, y me he dado cuenta de que no puede leer los números en la notación D
, por ejemplo:
>>> A = 1.0D+01
File "<stdin>", line 1
A = 1.0D+01
^
SyntaxError: invalid syntax
¿Puedo cambiar la configuración regional y dejar que Python sabe que significa D
E
? Realmente no me gustaría hacer una búsqueda global y reemplazar!
Solución
La forma más sencilla, desde el programa de Python, sería sólo para añadir un paso antes de interpretar cada entrada:
>>> val = "1.5698D+03" # 1,569.8
>>> print float(val.replace('D', 'E'))
1569.8
Otros consejos
Si se trata de una gran cantidad de datos y / o están haciendo mucho cálculos con esos datos, es posible considerar el uso del FORTRAN de usar numpy módulo que soporta el formato FORTRAN de doble precisión fuera de la caja.
>>> numpy.float('1.5698D+03')
1569.8
Otra opción es la href="https://bitbucket.org/brendanarnold/py-fortranformat/wiki/Home" rel="noreferrer"> fortranformat biblioteca para Python. Se leerá cuerdas e interpretarlos de acuerdo con una instrucción de formato FORTRAN. es decir.
>>> import fortranformat as ff
>>> line = ff.FortranRecordReader('(F10.0)')
>>> line.read('1.5698D+03')
[1569.8]
Instalar con easy_install -U fortranformat
Para cualquier duda, mi correo electrónico (yo soy el autor).