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

Dロケールを変更して Python にその意味を知らせることはできEますか? グローバルな検索と置換を行いたくありません。

4

3 に答える 3

14

大量のデータを扱っている場合、および/またはそのデータで多くの計算を行っている場合は、倍精度の fortran 形式をすぐにサポートする fortran 対応のnumpyモジュールの使用を検討してください。

>>> numpy.float('1.5698D+03')
1569.8
于 2009-12-24T18:31:11.367 に答える
14

Python プログラムからの最も簡単な方法は、各エントリを解釈する前にステップを追加することです。

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

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).

于 2011-07-11T23:11:35.473 に答える