python - 在 Python 中读取 Fortran 的默认输出

标签 python numpy fortran

我有 Fortran 77 中旧代码的输出。输出是用

编写的
write(NUM,*)

线。基本上,默认格式。以下是部分输出:

1.25107598E-67  1.89781536E-61  1.28064971E-94  5.85754394-118  8.02718071E-94 

我有一个用 F77 和 READ(NUM,*) 编写的后处理工具正确读取输入文件为:

1.25107598000000E-67  1.89781536000000E-61  1.28064971000000E-94  5.85754394000000E-118  8.02718071000000E-94

有问题的号码是 5.85754394-118 。 它将正确读取,因为它的意思是 5.85754394E-118在F77中。

但是,现在我用 python 编写了一个后处理,并且有以下代码行:

Z = numpy.fromstring(lines[nl], dtype=float, sep=' ')

它将逐行读取输出(通过 nl 上的循环)。 但是当它达到5.85754394-118时number 它将停止读取,进入下一行输出,基本上读取错误的数字。有没有办法以正确的方式读取它(Fortran的默认方式)? 我想我需要改变dtype选项但没有任何线索。

最佳答案

您可以使用正则表达式有效地后处理输出:

import re

r = re.compile(r"(?<=\d)\-(?=\d)")

output_line = "1.25107598E-67  1.89781536E-61  1.28064971E-94  5.85754394-118  8.02718071E-94 "
print(r.sub("E-",output_line))

结果:

1.25107598E-67  1.89781536E-61  1.28064971E-94  5.85754394E-118  8.02718071E-94 

(?<=\d)\-(?=\d)对数字执行后向查找和先行查找,并搜索它们之间的单个减号。它将减号替换为 E- .

关于python - 在 Python 中读取 Fortran 的默认输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741744/

相关文章:

python - 在 Pandas 中计算 YTD 总数

python - 如何检查这是否是 Django 中的索引页面?

python - 使用python从xml数据中提取所有文本

python-3.x - 根据 python 矩阵中特定行中的值相应地计算列值

python - 在 python 中调用 fortran 代码时如何处理全局变量(例如使用 f2py)?

arrays - 如何在 Fortran 中声明数组变量及其大小中间例程

python - 使用 ctypes 从 numba 调用 fortran

python - 求减IPSet

python - 我们如何通过使用 float 和 int 窗口大小的平均方法对一维数组值进行下采样?

python - 有没有办法填补图像中两个部分之间的空白?