python当字符串在行中从下一行获取数据时

时间:2015-12-11 00:25:01

标签: python string

我需要从匹配项下面的行中获取数据

示例:

for line in file:
  if 'string' in line:
    doSomething(nextline)

我尝试过几种不同的方法。我总是得到追溯

1 个答案:

答案 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)