需要在Python中读取特定范围的文本文件

2024-09-26 22:54:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要读一个文本文件在特定的行之后,比如说#100行。这一行有特定的数字,如“255”。然后我想用for循环来读接下来的500行。在这500行中我有一些数字要提取。例如在P[3]位置。然后我需要将这些值传递到数组中。最后我应该有几套像下面这样的。我用下面的代码来做这个。但我失败了。谁能帮我吗。在

文件如下所示

Generated by trjconv : a bunch of waters t=   0.00000
 500
    1SOL     OW    1   1.5040   2.7580   0.6820
    2SOL     OW    4   1.5210   0.9510   2.2050

  500SOL     OW 2998   1.5310   1.7952   2.1981
   3.12736   3.12736   3.12736
Generated by trjconv : a bunch of waters t= 9000.00000
 500
    1SOL     OW    1   1.5040   2.7580   0.6820
    2SOL     OW    4   1.5210   0.9510   2.2050

  500SOL     OW 2998   1.5310   1.7952   2.1981
   3.10941   3.10941   3.10941
Generated by trjconv : a bunch of waters t=   0.00000
 500
    1SOL     OW    1   1.5040   2.7580   0.6820
    2SOL     OW    4   1.5210   0.9510   2.2050

  500SOL     OW 2998   1.5310   1.7952   2.1981
   3.12736   3.12736   3.12736
Generated by trjconv : a bunch of waters t= 9000.00000
 500
    1SOL     OW    1   1.5040   2.7580   0.6820
    2SOL     OW    4   1.5210   0.9510   2.2050

  500SOL     OW 2998   1.5310   1.7952   2.1981
   3.10941   3.10941   3.10941

我写的代码

^{pr2}$

结果应该像下面的文件名'XYZ.txt文件'

Set 01
X = [1.32, 4.132, 2.23, .... upto 500]
Set 02
X = [4.232, 1.162, 3.73, .... upto 500]

Tags: 文件of代码forby数字数组generated
1条回答
网友
1楼 · 发布于 2024-09-26 22:54:12

您只需要获取内部循环中的行,可以使用next()来实现:

with open('filename') as f:
    for line in f:
       if line.split()[0] == '256':
          for _ in xrange(500):
              line = next(f)
              #do something with line

在上面的代码中,您将得到一个StopIteration错误,如果条件为真后文件没有500行,您可以使用try-except或使用itertools.islice获取文件对象的一部分:

^{pr2}$

如果行不是以前导空格开头,那么可以使用@zhangxaochen建议将line.split()[0] == '256'部分替换为line.startswith('256 ')。另一个选择是使用line.split(None, 1)[0] == '256',它只会拆分一次行。在

相关问题 更多 >

    热门问题