我将如何使用 fileinput 中的 "for line" 迭代到嵌套循环中文件的下一行?

How would I iterate onto the next line of a file within a nested loop using "for line" in fileinput?

为简化示例,我删除了一些嵌套循环。

我正在使用 fileinput 逐行遍历文件。如果该行满足特定条件,我希望它用 '' 替换所有未来的行,直到它再次满足条件。

import re
import fileinput
with fileinput.FileInput("survey.qsf", inplace=True, backup='.bak') as file:
    for line in file:
        if re.match(r'l'+datamap[i][2]+'.*$',line)!=None:
            line=re.sub(r'.*$','',line)
            while re.match(r'lQID\d*$',line)==None:
                line=re.sub(r'.*$','',line)
                next(line)

我使用 "next(line)" 作为占位符,因为我不知道如何在不跳出内部循环的情况下迭代到下一行。

我希望能够遍历这些行以获得:

lQID44
xyz
xyz
lQID45

输出为:

[blank line]
[blank line]
[blank line]
lQID45

谢谢。

nextiterator 作为参数。

while re.match(r'lQID\d*$',line)==None:
    line=re.sub(r'.*$','',line)
    try:
        line = next(file)  # Not next(line)
    except StopIteration:
        break

顺便说一句,没有必要使用 re.sub 将整行替换为空字符串; line = '' 就足够了。

(此外,分配给 line 不会对实际文件进行更改;inplace=True 只是意味着您可以 写入 file 以及从中读取,但您必须使用 printfile.write 明确写入文件。)