如何在python中循环回特定点

Posted

技术标签:

【中文标题】如何在python中循环回特定点【英文标题】:How to loop back in python to specific point 【发布时间】:2017-08-16 07:53:29 【问题描述】:

我有一个代码:

我希望我的程序在执行第三个 if 语句后返回 for 循环。当我使用“继续”时,它会返回到第二个 if 语句而不是返回到 for 循环。知道如何做到这一点吗?谢谢。

row = 0  
for line in fh:

    if line.startswith('CREATE'):
        startrow = row
    if row > startrow:
        if line.startswith('PRIMARY KEY'): (then go to the for loop)
        print row
    row = row + 1

【问题讨论】:

说明你想做什么,而不是如何你想做什么。到目前为止,您的问题不包含您的目标。 基本上我想捕获那些以'create'开头并以'Primary key'结尾的行之间的行。我的文件中有多个这样的行。所以我希望我的程序执行在遇到以“主键”开头的行时返回到 for 循环。 使用布尔标志在关键位置打开和关闭行的输出,让循环正常运行。 我不明白为什么它不起作用,但这就是为什么goto is considered harmful。 感谢您的 cmets。我尝试使用标志 .. 并且成功了! 【参考方案1】:

根据评论中的描述,您希望打印符合某些条件的行范围,就像awk '/^CREATE/,/^PRIMARY KEY/ print'。出于某种原因,您从不存在的嵌套循环的概念中使用 goto 计划了这一点。我们可以编写嵌套循环,但我们不需要。

printing = False
for line in fh:
    if line.startswith('PRIMARY KEY'):
        printing = False
    if printing:
        print row
    if line.startswith('CREATE'):
        printing = True

这个变体一开始不打印行,遇到 CREATE 后开始打印行,遇到 PRIMARY KEY 后立即停止。您可以重新排序三个测试以实现其他组合,例如打印包含这些关键字的行。

【讨论】:

非常感谢。这有帮助! @Bhaskar 解决您的问题后,别忘了勾选已接受的答案。

以上是关于如何在python中循环回特定点的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定点循环 ROBLOX 音频?

idea断点如何找集合中的值

Plotly:如何在绘图线图中的特定点添加标记(python / pandas)

如何在python中使用生成器查找特定值

如何在循环中修改文本文件中的特定行?

如何确保 Python while 循环需要特定的时间才能运行?