2016-09-12 2 views
-2

私は現在、特定の番号の別のExcelシートをチェックしているExcelシートを持っています。一致するセルが見つかると、最初のforループに戻ります。一致するセルが見つからない場合、その最初の6桁を見つけたら、それをチェックマークとしてマークし、最初のforループに再び移動します。ループの中断と他のコードの継続

これはどのように行われますか?

以下は私のコードです。私は最初のforのループに戻ってほしいとコメントしました。

for row in range(sheet.nrows): 
    cell = str(sheet.cell_value(row, 0)) 
    if fd.match(cell): 
     for rows in range(sheet.nrows): 
      windcell = str(windc_sheet.cell_value(rows, 0)) 
      if fd.match(windcell): 
       if cell == windcell: 
        outputsheet.write(row, 1, ' ') 
        #GO BACK TO FIRST FOR LOOP 

       else: 
        sixdig = cell[0:6] 
        sixdigwind = windcell[0:6] 
        if sixdig == sixdigwind: 
         outputsheet.write(row, 1, 'Check') 
         #GO BACK TO FIRST FOR LOOP 

    else: 
     sixdig = cell[0:6] 
     for rows in range(sheet.nrows): 
      windcell = str(windc_sheet.cell_value(rows,0)) 
      sixdigwind = windcell[0:6] 
      if sixdig == sixdigwind: 
       outputsheet.write(row, 1, 'Check') 
+3

'break'ステートメントを使用します。 –

+0

オペレータブレークを使用する – Alex

+0

実行を続行しますか? 「最初の」の「移動」または「戻る」は少し不明です。 – martineau

答えて

1

breakステートメントを使用してください。それはforループまたはwhileループからあなたを壊します。 Pythonのドキュメントから

ブレークが構文的にそのループ内の関数やクラス定義で入れ子になったためか、whileループ内でネストではなく のみ発生する可能性があります。 ループを囲む最も近いループを終了します。ループにループがある場合は、オプションのelse句をスキップします。 forループがbreakで終了した場合、ループ制御ターゲットは現在の値をそのまま保持します。 breakがfinally節を持つtry文から制御を渡すと、finally節が実際にループを離れる前に実行される というfinally節が実行されます。

(重点鉱山)

for row in range(sheet.nrows): 
    cell = str(sheet.cell_value(row, 0)) 
    if fd.match(cell): 
     for rows in range(sheet.nrows): 
      windcell = str(windc_sheet.cell_value(rows, 0)) 
      if fd.match(windcell): 
       if cell == windcell: 
        outputsheet.write(row, 1, ' ') 
        break # TERMINATE ENCLOSING FOR LOOP 

       else: 
        sixdig = cell[0:6] 
        sixdigwind = windcell[0:6] 
        if sixdig == sixdigwind: 
         outputsheet.write(row, 1, 'Check') 
         break # TERMINATE ENCLOSING FOR LOOP 

    else: 
     sixdig = cell[0:6] 
     for rows in range(sheet.nrows): 
      windcell = str(windc_sheet.cell_value(rows,0)) 
      sixdigwind = windcell[0:6] 
      if sixdig == sixdigwind: 
       outputsheet.write(row, 1, 'Check') 
関連する問題