Python | Filtrar la lista de strings según la lista de substrings

Dadas dos listas de strings string y substr , escriba un programa Python para filtrar todas las strings en string que contienen string en substr . Ejemplos:

Entrada: string = [‘ciudad1’, ‘clase5’, ‘habitación2’, ‘ciudad2’]
substr = [‘clase’, ‘ciudad’]
Salida: [‘ciudad1’, ‘clase5’, ‘ciudad2’]
Entrada: string = [‘coordenadas’, ‘xyCoord’, ‘123abc’]
substr = [‘abc’, ‘xy’]
Salida: [‘xyCoord’, ‘123abc’]

Método #1: Usar la comprensión de listas. 
Podemos usar la comprensión de listas junto con el operador in para verificar si la string en ‘substr’ está contenida en ‘string’ o no. 

Python3

# Python3 program to Filter list of
# strings 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))
Producción:

['city1', 'class5', 'city2']

 Método #2: expresión regular de Python 

Python3

# Python3 program to Filter list of
# strings 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))
Producción:

['city1', 'class5', 'city2']

Método #3: Usando el método find().

El método find() busca la string que se pasa como argumento en la string dada y devuelve la posición o devuelve -1.

Python3

# Python3 program to Filter list of
# strings based on another list
 
string = ['city1', 'class5', 'room2', 'city2']
substr = ['class', 'city']
x=[]
for i in substr:
    for j in string:
        if(j.find(i)!=-1 and j not in x):
            x.append(j)
print(x)
Producción

['class5', 'city1', 'city2']

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *