我有一个大约16000行的文件。 它们都有相同的格式。以下是一个简单的示例:
ATOM 139 C1 DPPC 18 17.250 58.420 10.850 1.00 0.00
<...>
ATOM 189 C1 DPPC 19 23.050 20.800 11.000 1.00 0.00
我需要检查包含字符串DPPC
和标识符18
的行是否在标识符切换到19
之前形成50行块,等等
现在,我有以下代码:
cnt = 0
with open('test_file.pdb') as f1:
with open('out','a') as f2:
lines = f1.readlines()
for i, line in enumerate(lines):
if "DPPC" in line:
A = line.strip()[22:26]
if A[i] == A [i+1]:
cnt = cnt + 1
elif A[i] != A[i+1]:
cnt = 0
我被困在这里了。我找到了一些例子来比较后续的行,但类似的方法在这里不起作用。我仍然不知道如何比较line[i]
中A
的值和line[i+1]
中A
的值。你知道吗
由于您的数据在固定宽度记录中显示为固定宽度字段,因此可以使用
struct
模块将每一行快速分解为单独的字段。你知道吗当您只需要处理其中一个字段时,解析每一行的所有字段可能会过于繁琐,但我所用的方法说明了在您需要进行其他处理时是如何完成的,并且使用
struct
模块在任何情况下都会相对快速。你知道吗假设输入文件只包含以下数据行:
您所需要做的就是记住前一行中字段的值,以便将其与当前字段进行比较。要开始这个过程,必须分别读取和解析第一行,因此有一个
prev
值要与后面的行进行比较。还要注意,第5个字段是由[4]
索引的字段,因为第一个字段从[0]
开始。你知道吗输出:
您还可以通过一个平行列表轻松解决此问题:
但如果你熟悉迪克特,我会同意卢茨的回答。你知道吗
试试这个(注释中的解释)。你知道吗
输出:
相关问题 更多 >
编程相关推荐