Fortran程序生成的一些结果文件使用字母D
代替E
报告双精度数字(科学计数法),例如:
1.2345D+02
# instead of
1.2345E+02
我需要使用Python处理大量此类数据,我只是意识到它无法读取D
表示法中的数字,例如:
>>> A = 1.0D+01
File "<stdin>", line 1
A = 1.0D+01
^
SyntaxError: invalid syntax
我可以更改我的语言环境,让Python知道D
表示E
吗?我真的不想进行全球搜索和替换!
答案 0 :(得分:14)
如果您正在处理大量数据和/或正在对该数据进行大量计算,您可以考虑使用支持fortran的numpy模块,该模块支持双精度fortran格式。< / p>
>>> numpy.float('1.5698D+03')
1569.8
答案 1 :(得分:10)
从Python程序中,最简单的方法就是在解释每个条目之前添加一个步骤:
>>> val = "1.5698D+03" # 1,569.8
>>> print float(val.replace('D', 'E'))
1569.8
答案 2 :(得分:7)
另一个选项是Python的fortranformat库。它将读取字符串并根据FORTRAN格式语句对其进行解释。即。
>>> import fortranformat as ff
>>> line = ff.FortranRecordReader('(F10.0)')
>>> line.read('1.5698D+03')
[1569.8]
使用easy_install -U fortranformat
如有任何问题,请发邮件给我(我是作者)。