python3 - python string expresiones regulares
Búsqueda de comodín en Python en una cadena (6)
¿Te refieres a alguna sintaxis específica para comodines? Normalmente *
representa "uno o muchos" caracteres y ?
representa uno.
La forma más simple es probablemente traducir una expresión de comodín en una expresión regular, luego usarla para filtrar los resultados.
Digamos que tengo una lista
list = [''this'',''is'',''just'',''a'',''test'']
¿Cómo puedo hacer que un usuario haga una búsqueda con comodines?
Palabra de búsqueda: ''th_s''
Volvería ''esto''
El método fácil es try os.system
:
import os
text = ''this is text''
os.system("echo %s | grep ''t*''" % text)
La misma idea que Yuushi en el uso de expresiones regulares, pero esto utiliza el método findall dentro de la biblioteca re en lugar de una lista de comprensión:
import re
regex = re.compile(''th.s'')
l = [''this'', ''is'', ''just'', ''a'', ''test'']
matches = re.findall(regex, string)
Las expresiones regulares son probablemente la solución más fácil a este problema:
import re
regex = re.compile(''th.s'')
l = [''this'', ''is'', ''just'', ''a'', ''test'']
matches = [string for string in l if re.match(regex, string)]
Podrías probar el módulo fnmatch , tiene una sintaxis comodín tipo concha
o puede usar expresiones regulares
importar re
Use fnmatch
:
import fnmatch
lst = [''this'',''is'',''just'',''a'',''test'']
filtered = fnmatch.filter(lst, ''th?s'')
Si desea permitir _
como un comodín, simplemente replace todos los guiones bajos con ''?''
(para un personaje) o *
(para caracteres múltiples).
Si desea que sus usuarios usen opciones de filtrado aún más potentes, considere permitirles usar expresiones regulares .