2011-03-04 67 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