gpt4 book ai didi

python-2.7 - 如何在 Python 中读取 Fortran 固定宽度格式的文本文件?

转载 作者:行者123 更新时间:2023-12-04 18:42:06 27 4
gpt4 key购买 nike

我有一个 Fortran 格式的文本文件(这里是前 3 行):

00033+3251 A   B       C?      6.96    5.480" 358  9.12 F0V    0.00        2.28s  1.00: 2MASS, dJ=1.3
00033+3251 Aa Ab Aab S1,E 0.62 0.273m 0 9.28 F0V 11.28 K2 1.68* 0.32* SB 1469
00033+3251 Aab Ac A E* 4.26 0.076" 0 9.12 F0V 0.00 2.00s 0.28* 2008MNRAS.383.1506

和文件格式说明:
--------------------------------------------------------------------------------
Bytes Format Units Label Explanations
--------------------------------------------------------------------------------
1- 10 A10 --- WDS WDS(J2000)
12- 14 A3 --- Primary Designation of the primary
16- 18 A3 --- Secondary Designation of the secondary component
20- 22 A3 --- Parent Designation of the parent (1)
24- 29 A6 --- Type Observing technique/status (2)
31- 35 F5.2 d logP ? Logarithm (10) of period in days
37- 44 F8.3 --- Sep Separation or axis
45 A1 --- x_Sep ['"m] Units of sep. (',",m)
47- 49 I3 deg PA Position angle
51- 55 F5.2 mag Vmag1 V-magnitude of the primary
57- 61 A5 --- SP1 Spectral type of the primary
63- 67 F5.2 mag Vmag2 V-magnitude of the secondary
69- 73 A5 --- SP2 Spectral type of the secondary
75- 79 F5.2 solMass Mass1 Mass of the primary
80 A1 --- MCode1 Mass estimation code for primary (3)
82- 86 F5.2 solMass Mass2 Mass of the secondary
87 A1 --- MCode2 Mass estimation code for secondary (3)
89-108 A20 --- Rem Remark

如何在 Python 中读取我的文件。我只找到了 read_fwf来自 pandas 的函数图书馆。
import pandas as pd

filename = 'systems'
columns = ((0,10),(11,14),(15,18),(19,22),(23,29),(30,35),(36,44),(45,45),(46,49),(50,55),(56,61),(62,67),(68,73),(74,79),(80,80),(81,86),(87,87),(88,108))
data = pd.read_fwf(filename, colspecs = columns, header=None)

这是唯一可能和有效的方法吗?我希望我可以在没有 pandas 的情况下做到这一点.你有什么建议吗?

最佳答案

     columns = ((0,10),(11,14),(15,18),(19,22),(23,29),(30,35),
(36,44),(44,45),(46,49),(50,55),(56,61),(62,67),
(68,73),(74,79),(79,80),(81,86),(86,87),(88,108))
string=file.readline()
dataline = [ string[c[0]:c[1]] for c in columns ]

注意列索引是 (startbyte-1,endbyte) 以便单个字符字段是
例如:(44,45)

这会给你一个字符串列表。您可能想要转换为浮点数、整数等。这里有很多关于该主题的问题。

关于python-2.7 - 如何在 Python 中读取 Fortran 固定宽度格式的文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23763695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com