我将如何使用 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
谢谢。
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
明确写入文件。)
为简化示例,我删除了一些嵌套循环。
我正在使用 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
谢谢。
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
明确写入文件。)