python - 有没有办法改变for循环的迭代器?
问题描述
我在 for 循环中每行读取一个文件行,并执行一个 while 循环来修改迭代器的循环,如下所示:
for line in archive:
...
if re.search("{",line):
while not re.search("}",line):
...
line = next_line
...
完整代码如下
import re
a = ["{\n","int b,c,d\n","#pragma omp parallel for\n","for (int i=0;i<10;i++)\n",'1\n','2\n','3\n','\n4',"}\n",'6','7','8','9','0','z','y']
listwh=[]
a_it=iter(a)
text =[]
flagcb=0
for j in a:
print(j)
for line in a_it:
if re.search("{",line):
flagcb=flagcb+line.count("{")-line.count("}")
while(flagcb>0):
listwh.append(line)
print(flagcb)
print(line)
flagcb=flagcb+line.count("{")-line.count("}")
line = next(a_it)
text.append(line)
for i in listwh:
print(i)
print("\ninterval\n")
#for i in text:
# print(i)
我喜欢留在 while 循环中,直到档案读取的停止条件。
解决方案
您可以从您的可迭代显式创建一个迭代器:
archive_iter = iter(archive)
然后它将在循环之间保持先进。
for line in archive_iter:
if '{' in line:
while '}' not in line:
line = next(archive_iter)
推荐阅读
- python - 如何替换列表中的特定值?
- javascript - Formik 在有效字段更改后调度 Redux 操作
- deep-learning - 我可以在进行深度学习时使用来自不同来源的数据集吗
- php - 未捕获的 PHP 异常 Symfony\Component\HttpKernel\Exception\NotFoundHttpException:“没有为“GET /”找到路由
- c++ - 带有 std::tuple_cat 的模板实例化 decltype 和 declval
- javascript - 使用来自 JSON 对象的数据填充具有多条线的 Chart.Js 折线图
- javascript - 使用 Typescript 在 Webpack 编译期间动态导入模块
- r - 计算 R 中具有特定名称模式的列的行均值
- github - 如何获取已合并到 master 的 pull request 列表?
- javascript - 如何在firebase web中获得新添加的孩子?