gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:01:36 25 4
gpt4 key购买 nike

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

我正在使用 fileinput 逐行迭代文件。如果该行满足某个条件,我希望它用 '' 替换所有 future 的行,直到再次满足条件。

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 将迭代器作为其参数。

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 显式写入文件。)

关于python - 如何使用 fileinput 中的 "for line"迭代到嵌套循环中文件的下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54008379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com