16

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什么吗?我真的不想进行全局搜索和替换!

4

3 回答 3

14

从您的 Python 程序中,最简单的方法是在解释每个条目之前添加一个步骤:

>>> val = "1.5698D+03"  # 1,569.8
>>> print float(val.replace('D', 'E'))
1569.8
于 2009-12-24T18:00:58.370 回答
14

如果您正在处理大量数据和/或对这些数据进行大量计算,您可以考虑使用支持双精度 fortran 格式的 fortran 友好numpy模块。

>>> numpy.float('1.5698D+03')
1569.8
于 2009-12-24T18:31:11.367 回答
8

另一种选择是用于 Python 的fortranformat库。它将读取字符串并根据 FORTRAN 格式语句对其进行解释。IE

>>> import fortranformat as ff
>>> line = ff.FortranRecordReader('(F10.0)')
>>> line.read('1.5698D+03')
[1569.8]

安装easy_install -U fortranformat

有任何问题,给我发电子邮件(我是作者)。

于 2011-07-11T23:11:35.473 回答