如何在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中循环回特定点的主要内容,如果未能解决你的问题,请参考以下文章