[英]Continue looping despite exception in for loop
我正在编写一些代码以遍历XML,但遇到了一个棘手的问题。 当我迭代时,我正在循环中解压值。 打开包装时,有时会出现异常。 我想知道尽管有例外,如何继续循环。 我明白我可以解压使用循环内的值try
和except
有,但我不知道是否有一个更优雅的方式来做到这一点,同时利用for循环拆包语法。 下面的简短示例中的问题是由于元素过多,但我希望捕获此异常和其他潜在异常。
请参阅下面的问题类似示例。
lst = [(1,2), (3,4), (5,6,7), (8,9)]
try:
for fst, snd in lst:
print(fst, snd)
except:
print("exception")
其输出将是:
1 2
3 4
exception
我想知道如何处理它,以使代码前进到(8,9)上。 谢谢!
如果元组肯定包含至少两个项目,这似乎很简单。
for f,s,*r in [(1,2), (3,4), (5,6,7), (8,9)]:
print(f,s)
有一种方法可以做到这一点,但这有点丑陋:
lst = iter(lst) # so it wont restart
while True:
try:
for fst, snd in lst:
# stuff
break # if the loop was successful
except:
pass
您可以使用列表理解功能来首先避免错误:
for fst, snd in [x for x in lst where len(x) == 2]:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.