How can I check a string for substrings contained in a list, like in Check if a string contains an element from a list (of strings), but in Python?
Asked
Active
Viewed 1.8e+01k times
1 Answers
271
Try this test:
any(substring in string for substring in substring_list)
It will return True
if any of the substrings in substring_list
is contained in string
.
Note that there is a Python analogue of Marc Gravell's answer in the linked question:
from itertools import imap
any(imap(string.__contains__, substring_list))
In Python 3, you can use map
directly instead:
any(map(string.__contains__, substring_list))
Probably the above version using a generator expression is more clear though.

Alex Fortin
- 2,105
- 1
- 18
- 27

Sven Marnach
- 574,206
- 118
- 941
- 841
-
3@newtover: [Generator expressions](http://docs.python.org/tutorial/classes.html#generator-expressions) don't have square brackets. – Sven Marnach Nov 14 '11 at 17:34
-
7is there any way to get the substring when it will return True? – zztczcx Apr 26 '17 at 23:50
-
13@vagabond You can use `next(substring for substring in substring_list if substring in string)`, which will return the first matching substring, or throw `StopIteration` if there is no match. Or use a simple loop: `for substring in substring_list: if substring in string: return substring`. – Sven Marnach May 03 '17 at 09:31
-
@SvenMarnach variable 'substring''s lifetime is DONE and unavailable in the StopIteration exception – Andrew Ward Jan 19 '23 at 17:29