我有一个代码:
我希望我的程序在第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
答案 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时立即再次停止。您可以重新排序这三个测试以实现其他组合,例如打印包含这些关键字的行。