2017-08-16 14 views
0

コードがあります:Pythonで特定のポイントにループバックする方法

3回目のif文が実行された後、自分のプログラムがforループに戻るようにします。 "continue"を使うと、2回目の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

あなたがしたいことを説明してください。*どのようにしたいのですか?これまでのところあなたの質問にはあなたの目標が含まれていません。 – Tomalak

+0

基本的には、「作成」で始まり「主キー」で終わる行の間にある行をキャプチャしたいと思います。私のファイルにはこのような行が複数あります。だから、私は私のプログラムの実行が、 '一次キー'で始まる行に出会ったら、forループに戻るようにしたい。 – Bhaskar

+0

ブールフラグを使用して、主要な場所の行の出力をオンまたはオフに切り替え、ループを正常に実行させます。 – Tomalak

答えて

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に遭遇すると、再びすぐに停止します。 3つのテストの順序を変更して、それらのキーワードを含む行を印刷するような他の組み合わせを実現できます。

+0

ありがとうございました。これは助けになった! – Bhaskar

+0

@Bhaskarあなたの質問を解決したときに受け入れられた答えをチェックするのを忘れないでください。 – Tomalak

関連する問題