为简化示例,我消除了一些嵌套循环。
我正在使用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
谢谢。
答案 0 :(得分:3)
next
以 iterator 作为其参数。
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
以及从中读取,但是您必须使用print
或file.write
显式写入文件。)