我有一个文件,我想在文件中选择某些行并将其复制到另一个文件。
在第一个文件中,我要复制的行包含" XYZ"从这里我想选择接下来的200行(包括匹配行)并将其复制到另一个文件。
以下是我的代码
match_1 = 'This is match word'
with open('myfile.txt') as f1:
for num, line in enumerate(f1, 1):
if log_1 in line:
print line
上面的代码将我带到了行的开头,我需要从匹配的行中选择200行,然后复制,将其移动到另一个文本文件。
我尝试了几个选项,比如while语句,但我无法完全构建逻辑。请帮助
答案 0 :(得分:1)
找到匹配项后,您可以在文件对象上使用itertools.islice
:
from itertools import islice
# some code before matching line is found
chunk = line + ''.join(islice(f1, 200))
这将消耗迭代器f1
到接下来的200行,因此如果将循环放在循环中,循环中的num
计数可能不一致。
如果在找到匹配项后不需要文件中的其他行,则可以使用:
from itertools import islice
with open('myfile.txt') as f1, open('myotherfile.txt') as f_out:
for num, line in enumerate(f1, 1):
if log_1 in line:
break
chunk = line + ''.join(islice(f1, 200))
f_out.write(chunk)
答案 1 :(得分:0)
像
这样的东西>>> with open("pokemonhunt", "r") as f:
... Lines = []
... numlines = 5
... count = -1
... for line in f:
... if "pokemon" in line: % gotta catch 'em all!!!
... count = 0
... if -1 < count < numlines:
... Lines.append(line)
... count += count
... if count == numlines:
... with open("pokebox","w") as tmp: tmp.write("".join(Lines))
或者我误解了你的问题?