我需要读一个文本文件在特定的行之后,比如说#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]
您只需要获取内部循环中的行,可以使用
next()
来实现:在上面的代码中,您将得到一个
^{pr2}$StopIteration
错误,如果条件为真后文件没有500行,您可以使用try-except
或使用itertools.islice
获取文件对象的一部分:如果行不是以前导空格开头,那么可以使用@zhangxaochen建议将
line.split()[0] == '256'
部分替换为line.startswith('256 ')
。另一个选择是使用line.split(None, 1)[0] == '256'
,它只会拆分一次行。在相关问题 更多 >
编程相关推荐