如何查找列表中的哪个字符串是另一个字符串的一部分?

时间:2016-01-11 12:38:11

标签: python string python-2.7

我可以用它来查找列表中的任何字符串(ignorable_errors)是否在异常字符串中,但我如何找到匹配的字符串。

ignorable_errors = ["error1", "error2"]
if any(s in str(e) for s in ignorable_errors):
    print "got error {}".format(str(e))

2 个答案:

答案 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)]