如何在python的帮助下分割一个巨大的txt文件

2024-04-26 03:11:23 发布

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

我有一个很大的文本文件(模型.txt)包含如下行:

Model 1
text
text
text
text
END

Model 2
text
text
text
text
END

Model 3
text
text
text
text
END

我想写一个函数,这样它就可以以“Model 1”、“Model 2”和“Model 3”为起点,以“END”为终点,写出相应块的put文件Model_1.txt、Model_2.txt和Model_3.txt

因为我不太懂编程所以我写了这个

a = open('C:/Users/Zebrafish/Desktop/AHR_human_modeling/human/edited/1AHH.B99990013.pdb','r')
lines = a.readlines()

x = 1

for line in lines:
    if 'END' in line:
        PDB_file = open('C:/Users/Zebrafish/Desktop/AHR_human_modeling/human/edited/model_1.pdb','w')
        PDB_file.write(line)
        PDB_file.close()

Tags: texttxtmodellineopenuserspdbfile
2条回答

如果文件适合内存,则可以使用正则表达式拆分文件,然后对匹配项进行迭代:

with open('models.txt') as handle:
    models = re.findall("Model.*?END", handle.read(), re.MULTILINE|re.DOTALL)
    for i, model in enumerate(models):
        with open('model_%s.txt' % i) as output:
            output.write(model)
from itertools import groupby
with open('infile') as f:
    groups = groupby(f, key=str.isspace)
    for k, lines in groups:
        if k:
            continue
        fname = next(lines).strip().lower().replace(' ', '_')+'.txt'
        with open(fname, 'w') as outf:
            outf.writelines(lines)

相关问题 更多 >