我需要从匹配项下面的行中获取数据
示例:
for line in file:
if 'string' in line:
doSomething(nextline)
我尝试过几种不同的方法。我总是得到追溯
答案 0 :(得分:2)
如果你有一个文件对象,你可以这样做:
for line in f:
if SOMETEXT in line:
foo(next(f)) # not next(line), next(f)
但是这会导致for
循环跳过下一行。相反,你可以迭代两行。
import itertools
with open(...) as f:
a, b = itertools.tee(f)
next(b) # skips a line in the "next line" iterator
for thisline, nextline in zip(a,b):
if SOMETEXT in thisline:
foo(nextline)
这实际上是文档中itertools
recipe页面上的pairwise
食谱。保持这个链接方便 - 它非常有用
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)