Python:如何从列表中检查字符串是否包含子字符串?

131
1个回答

282

尝试这个测试:

any(substring in string for substring in substring_list)

如果substring_list中的任何子字符串包含在string中,则它将返回True
请注意,在链接的问题中有Marc Gravell的答案的Python类比。
from itertools import imap
any(imap(string.__contains__, substring_list)) 

在Python 3中,您可以直接使用map
any(map(string.__contains__, substring_list))

也许使用生成器表达式的上述版本更加清晰易懂。


3
生成器表达式没有方括号。 - Sven Marnach
7
有办法在返回 True 时获取子字符串吗? - zztczcx
13
你可以使用next(substring for substring in substring_list if substring in string),它将返回第一个匹配的子字符串,如果没有匹配则会引发StopIteration异常。或者使用简单的循环:for substring in substring_list: if substring in string: return substring - Sven Marnach
2
太棒了。Python真的很美! - Dev_Man
@SvenMarnach变量“substring”的生命周期已结束,在StopIteration异常中不可用。 - Andrew Ward

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接