使用D而不是E的Python科学计数法

zour9fqk  于 2023-01-01  发布在  Python
关注(0)|答案(3)|浏览(160)

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

daupos2t

daupos2t1#

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

>>> val = "1.5698D+03"  # 1,569.8
>>> print float(val.replace('D', 'E'))
1569.8
fd3cxomn

fd3cxomn2#

如果你正在处理大量的数据和/或正在用这些数据做大量的计算,你可以考虑使用fortran友好的numpy模块,它支持开箱即用的双精度fortran格式。

>>> numpy.float('1.5698D+03')
1569.8
abithluo

abithluo3#

另一个选择是Python的fortranformat库,它将读取字符串并根据FORTRAN格式语句解释它们。

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

使用easy_install -U fortranformat安装
有任何问题,请发邮件给我(我是作者)。

相关问题