Python | Filter a list of strings based on a list of substrings



Examples :

  Input:  string = [`city1`,` class5`, `room2`,` city2`] substr = [ `class`,` city`]  Output:  [`city1`,` class5`, `city2`]  Input:  string = [` coordinates`, `xyCoord`, `123abc`] substr = [` abc`, `xy`]  Output:  [` xyCoord`, `123abc`] 

Method # 1: Using list comprehension

We can use a list comprehension in conjunction with the in, operator to check if a string is contained in & # 39; substr & # 39; in & # 39; string & # 39; or not.

# Python3 list filtering program
# lines based on another list

import re

 

def Filter (string, substr):

return [ str for str in string if

  any (sub in str for sub in substr)]

 
# Driver code

string = [ `city1` , `class5` , `room2` , ` city2` ]

substr = [ ` class` , `city` ]

print ( Filter (string, substr))

 Output:

 [`city1`,` class5`, `city2`] 

Method # 2: Python Regex

# Python3 list filtering program
# lines based on another list

import re

 

def Filter (string, substr):

return [ str for str in string 

if re.match (r ` [^ d] + | ^ ` , str ) .group ( 0 ) in substr]

 
# Driver code

string = [ `city1` , ` class5` , `room2` , ` city2` ]

substr = [ `class` , ` city` ]

print ( Filter (string, substr))

Exit:

 [`city1`,` class5`, `city2`]