Python:从一个文件中选择一系列行并将其复制到另一个文件中
我有一个文件,我想选择文件中的某些行并将其复制到另一个文件中 在第一个文件中,我要复制的行有单词“XYZ”,从这里我要选择接下来的200行(包括匹配线),并将其复制到另一个文件中 下面是我的代码Python:从一个文件中选择一系列行并将其复制到另一个文件中,python,python-2.7,file,Python,Python 2.7,File,我有一个文件,我想选择文件中的某些行并将其复制到另一个文件中 在第一个文件中,我要复制的行有单词“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
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语句,但我无法完全构建逻辑。请帮助一旦找到匹配项,您可以在文件对象上使用
itertools.islice
:
from itertools import islice
# some code before matching line is found
chunk = line + ''.join(islice(f1, 200))
这将在接下来的200行中使用迭代器f1
,因此如果将其放置在循环中,循环中的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)
像这样的怎么样
>>> 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))
>>将open(“口袋妖怪”、“r”)作为f:
... 行=[]
... numlines=5
... 计数=-1
... 对于f中的行:
... 如果“口袋妖怪”在队伍里,我要抓住他们所有人!!!
... 计数=0
... 如果-1
还是我误解了你的问题?(显然,如果你希望有多个匹配项,请每次更改输出文件名,或附加到同一个文件中,等等)感谢塔索斯的快速响应……实际上我想打开一个文件并在文件中搜索一个单词。一旦我找到匹配项,我需要复制接下来的200行,并放入一个新的文件进行进一步的分析。下次我会尝试让我的问题更加清晰……是的,这就是它的作用。(如果你的单词是“口袋妖怪”,你需要5行:p)好的,塔索斯..我也会尝试一下这个逻辑..再次感谢汉克斯·摩西的快速反应。这正好解决了我的问题。