2015-11-12 29 views
-2

我使用python處理一些文件的.csv。在.csv文件中,有很多行。有多行是相同的。 打開此文件,在for row in reader:循環後,我想找到的第一個重複行,並將其分配給一個變量。然後繼續處理循環中的其他行。停止if語句沒有打破for循環,影響其他IFS

的問題是,沒有打破循環,當它遇到另一個同一行,if語句將再次運行。我只想要if語句在找到第一個想要的行時運行一次。這將導致冗餘運行if語句多次,而一次就足夠了。

如何只有if語句僅在第一次運行這個如果條件得到滿足?當找到第一個想要的行時,我可以打開循環,然後重複for row in reader:來處理其他行,但我認爲必須有一種方法可以在單個循環中完成此操作。

+3

跟蹤它是否是第一次還是不行。 – martineau

+0

請不要降低這個問題。我在網上做了很多關於這個問題的搜索。但大多數問題都是關於如何打破循環。這個問題將爲新手提供的類似問題提供未來的參考。 – Wanlie

回答

2

這是編程中的一種常見模式。第一次滿足條件時設置一個標誌。那麼如果您的標誌已經設置,則忽略該條件。

already_set = False 
row_variable = None 
for row in reader: 
    if (row meets some condition) and (not already_set): 
     row_variable = row 
     already_Set = True 
# now row_variable holds the first row that met your condition 
# or it holds None if no rows meet the condition 
+2

這種格式,你甚至可以通過'not row_variable'來減少變量,因爲'None'斷言爲'False' –

0

你可以只用一個布爾值來表示你是否已經處理的匹配行與否,並在if聲明額外的檢查。

found = False 
for r in rows: 
    if (r == "whatever conidition for the row" and not found): 
     found = True 
     # processing code