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
 
    