Change language

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’]