【问题标题】:How to find which string in a list is part of another string?如何查找列表中的哪个字符串是另一个字符串的一部分?
【发布时间】:2016-01-11 12:38:11
【问题描述】:

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

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

【问题讨论】:

标签: python string python-2.7


【解决方案1】:

使用生成器表达式和next,像这样

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

【讨论】:

  • 这符合OP的初衷,懒惰地评估+1。
【解决方案2】:

你可以使用filter():

matched = filter(lambda s: s in str(e), ignorable_errors)

同样可以通过列表推导实现:

matched = [s for s in ignorable errors if s in str(e)]

【讨论】:

    猜你喜欢
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2016-06-24
    • 2013-05-12
    相关资源
    最近更新 更多