2011-03-04 87 views

回答

1

注意,它通常是一個壞主意,做一個普通的except:,因爲它將吞噬你需要知道的異常關於。

LL = [("bad line",456,"N/A"),["good line", 123, 456],] 

for line in LL: 
    try: 
     if "N/A" in line: 
      raise ValueError 

     print line[0] 

    except ValueError: 
     print "skipped" 
+0

-1引發一個異常,將它自己陷入同一個try塊是荒謬的。使用if/else! – 2011-03-04 19:45:17

+0

@John Machin,OP要求使用例外的例子。誠然,如果實際的代碼真的很簡單,那不是我所能做的。 – 2011-03-04 20:48:43

+0

這不是你應該在非平凡的代碼中完成的。 – 2011-03-04 21:39:24

1

修訂

我想這樣的

try: 
    if "N/A" in [XXX,YYY,ZZZ,AAA] 
     raise Exception() 
except: 
    pass 
+0

假設原始問題是僞代碼,並打算檢查所有字段對「不適用」,這將無法正常工作。例如。如果XXX是「truthy」,你會拋出異常。 (和YYY和ZZZ一樣)。這三項不針對「不適用」進行檢查。 – 2011-03-04 18:37:29

+0

你是對的我修正了 – 2011-03-04 18:45:13

1
for data in LL: 
    try: 
     if "N/A" in data: 
     continue 
     else: 
     x, y, z = data 
     # Process data... 
    except Exception: 
     continue 
+0

我喜歡這個,但是會改變條件到'(x,y,z)'中的'如果'N/A' - 它更乾淨,更容易閱讀。 – 2011-03-04 18:30:23

+0

謝謝!我解決了它。 – nesv 2011-03-04 18:31:52

+0

數據中的if「N/A」有什麼問題:??? – 2011-03-04 19:48:41