由于我有一个巨大的文件(几个GB),所以我不想将整个文件加载到内存中,而是使用* generators逐行加载。我的文件是这样的:
# millions of lines
..................
..................
keyw 28899
2233 121 ee 0o90 jjsl
2321 232 qq 0kj9 jksl
keyw 28900
3433 124 rr 8hu9 jkas
4532 343 ww 3ko9 aslk
1098 115 uy oiw8 rekl
keyw 29891
..................
..................
# millions more
到目前为止,我已经找到了类似的答案here。但是我不知道如何执行它。因为ans具有特定的标识符Start
和Stop
,而我的文件具有带有相同关键字的递增编号。我希望对此有所帮助。
编辑:生成器而不是迭代器
答案 0 :(得分:1)
如果您想改写这个答案,这可能会有所帮助:
bucket = []
for line in infile:
if line.split()[0] == 'keyw':
for strings in bucket:
outfile.write( strings + '\n')
bucket = []
continue
bucket.append(line.strip())