Python 科学记数法使用 D 代替 E

发布于 2024-08-15 18:08:16 字数 446 浏览 7 评论 0原文

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

Some results file produced by Fortran programs report double precision numbers (in scientific notation) using the letter D instead of E, for instance:

1.2345D+02
# instead of
1.2345E+02

I need to process huge amounts of this data using Python, and I just realized it cannot read the numbers in the D notation, for instance:

>>> A = 1.0D+01
  File "<stdin>", line 1
    A = 1.0D+01
           ^
SyntaxError: invalid syntax

Can I change my locale and let Python know that D means E? I really would not want to make a global search-and-replace!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半寸时光 2024-08-22 18:08:16

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

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

The simplest way, from your Python program, would be just to add a step before you interpret each entry:

>>> val = "1.5698D+03"  # 1,569.8
>>> print float(val.replace('D', 'E'))
1569.8
挽手叙旧 2024-08-22 18:08:16

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

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

If you are dealing with lots of data and/or are doing a lot computations with that data, you might consider using the fortran-friendly numpy module which supports double-precision fortran format out of the box.

>>> numpy.float('1.5698D+03')
1569.8
冷了相思 2024-08-22 18:08:16

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

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

使用 easy_install -U fortranformat 安装

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

Another option is the fortranformat library for Python. It will read strings and interpret them according to a FORTRAN format statement. i.e.

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

Install with easy_install -U fortranformat

Any questions, email me (I'm the author).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文