我可以用它来查找列表中的任何字符串(ignorable_errors)是否在异常字符串中,但我如何找到匹配的字符串。
ignorable_errors = ["error1", "error2"]
if any(s in str(e) for s in ignorable_errors):
print "got error {}".format(str(e))
答案 0 :(得分:4)
使用生成器表达式和http://api.mongodb.org/c/1.1.0/mongoc_cursor_t.html,就像这样
next(e for s in ignorable_errors if s in str(e))
您实际上可以将默认值传递给next
,就像这样
next((e for s in ignorable_errors if s in str(e)), None)
如果没有匹配项,将返回默认值None
。
例如,
>>> e = "error1"
>>> print next((e for s in ignorable_errors if s in str(e)), None)
error1
>>> e = "error3"
>>> print next((e for s in ignorable_errors if s in str(e)), None)
None
答案 1 :(得分:3)
您可以使用filter()
:
matched = filter(lambda s: s in str(e), ignorable_errors)
使用列表理解可以实现同样的目的:
matched = [s for s in ignorable errors if s in str(e)]