【问题标题】: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
【解决方案2】:
你可以使用filter():
matched = filter(lambda s: s in str(e), ignorable_errors)
同样可以通过列表推导实现:
matched = [s for s in ignorable errors if s in str(e)]