如何将带有fortran格式数字的文件读入python?

如何将带有fortran格式数字的文件读入python?,python,arrays,numpy,fortran,genfromtxt,Python,Arrays,Numpy,Fortran,Genfromtxt,我有一个fortran格式的txt文件,其数字如下0.755473D-08 如果我使用np.genfromtxt(data,dtype=None),它会显示b'0.755473D-08'。我怎样才能摆脱b In [315]: txt = '''0.755473D-08 ...: 0.755473D-08 ...: 0.755473D-08''' In [316]: np.genfromtxt(txt.splitlines()) Out[316]: array([nan, na

我有一个fortran格式的txt文件,其数字如下
0.755473D-08

如果我使用
np.genfromtxt(data,dtype=None)
,它会显示
b'0.755473D-08'
。我怎样才能摆脱
b

In [315]: txt = '''0.755473D-08
     ...: 0.755473D-08
     ...: 0.755473D-08'''
In [316]: np.genfromtxt(txt.splitlines())
Out[316]: array([nan, nan, nan])
In [317]: np.genfromtxt(txt.splitlines(),dtype=None)
...
Out[317]: array([b'0.755473D-08', b'0.755473D-08', b'0.755473D-08'], dtype='|S12')
使用字符串
替换

In [319]: txt.replace('D','e')
Out[319]: '0.755473e-08\n0.755473e-08\n0.755473e-08'
In [320]: np.genfromtxt(_.splitlines())
Out[320]: array([7.55473e-09, 7.55473e-09, 7.55473e-09])
也可以逐行执行(从文件中读取时)

使用转换器,应用于每个元素(每行列):


在转换器之后,它不会尝试进行任何进一步的
dtype
转换,因此我必须在转换器中包含
float()

在询问之前您搜索了吗?请参阅
genfromtxt
中的与
转换器组合。这一个是,但我的问题是我无法将fortran格式的数字加载到python中,因为它显示的是
nan
,而不是无法替换
D
。这似乎是专门关于使用
genfromtxt
?我会马上说,您需要将类型设置为string,并在阅读后进行转换。
In [326]: np.genfromtxt(txt.splitlines(), converters={0:lambda x:float(x.replace('D','e'))}, encoding=None)
Out[326]: array([7.55473e-09, 7.55473e-09, 7.55473e-09])