如何在python中循环回特定点

时间:2017-08-16 07:53:30

标签: python goto continue

我有一个代码:

我希望我的程序在第3个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

1 个答案:

答案 0 :(得分: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时立即再次停止。您可以重新排序这三个测试以实现其他组合,例如打印包含这些关键字的行。