Skip to main content
 首页 » 编程设计

python之使用python从数据文件中提取几行

2025年05月04日18小虾米

我有一个大文件,其中包含大量数据。我需要每 5000 行左右提取 3 行。数据文件格式如下:

...

O_sh          9215    1.000000   -2.304400    
 -1.0680E+00  1.3617E+00 -5.7138E+00   
O_sh          9216    1.000000   -2.304400   
 -8.1186E-01 -1.7454E+00 -5.8169E+00   
timestep    501      9216         0         3    0.000500   
   20.54      -11.85       35.64       
  0.6224E-02   23.71       35.64       
  -20.54      -11.86       35.64       
Li               1    6.941000    0.843200 
  3.7609E-02  1.1179E-01  4.1032E+00 
Li               2    6.941000    0.843200 
  6.6451E-02 -1.3648E-01  1.0918E+01 

...

我需要的是以“timestep”开头的行之后的三行,所以在这种情况下我需要 3x3 数组:

   20.54      -11.85       35.64       
  0.6224E-02   23.71       35.64       
  -20.54      -11.86       35.64   

在每次出现单词“timestep”时的输出文件中。

然后我只需要一个数组中所有这些数组的平均值。只有一个数组,由整个文件的每个数组中相同位置的每个元素的平均值组成。 我已经为此工作了一段时间,但我还无法正确提取数据。

非常感谢,这不是作业。您的建议将有助于科学的进步! =)

谢谢,

请您参考如下方法:

假设这不是家庭作业,我认为正则表达式对于这个问题来说太过分了。如果您知道在以“timestep”开头的一行之后需要三行,为什么不以这种方式解决问题:

Matrices = [] 
 
with open('data.txt') as fh: 
  for line in fh: 
    # If we see timestep put the next three lines in our Matrices list. 
    if line.startswith('timestep'): 
      Matrices.append([next(fh) for _ in range(3)]) 

根据评论 - 在这种情况下使用 next(fh) 可以在您想要从中提取接下来的三行时使文件句柄保持同步。谢谢!