我有以下脚本:
iterator = iter(f.splitlines())
for line in iterator:
if "some_string" in line:
next_line = next(iterator) # next line has some float/integer values
if next_line == "some_value":
do-something
我正在打开一个文件并在其中查找关键字。如果我找到它们,我会将下一行中出现的整数/浮点值附加到列表中。
问题是“for”循环将采用“next_line”之后的行。例如:
line1: "keyword"
line2: 3
line3: something-else
line4: keyword
line5: 4
如果我在line1中找到了我想要的东西并从line2中获取了ineger,那么“for-loop”将从第3行继续。如何从line1的最后一个位置继续(从line2继续,不管next_line是否接受了它) )?我想回一行。
答案 0 :(得分:1)
听起来您希望使用itertools.tee
来获取两个迭代器,这两个迭代器可以设置为彼此关闭的一个项目:
import itertools
it0, it1 = tee(f) # no need for splitlines, just use the file object as an iterator
next(it1) # throw away the first value from one of the iterators
for val0, val1 in zip(it0, it1): # iterate in parallel
if "some_string" in val0 and val1 == "some_value":
do_stuff()