我正在编写一些代码来迭代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)。谢谢!
答案 0 :(得分:3)
如果元组肯定最少有两个项目,那么这似乎很简单。
for f,s,*r in [(1,2), (3,4), (5,6,7), (8,9)]:
print(f,s)
答案 1 :(得分:1)
有一种方法可以做到这一点,但它有点难看:
lst = iter(lst) # so it wont restart
while True:
try:
for fst, snd in lst:
# stuff
break # if the loop was successful
except:
pass
答案 2 :(得分:0)
您可以使用首先防止错误的列表推导:
return [
....
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
....
];