Python | Encuentre todas las coincidencias cercanas de la string de entrada de una lista

Se nos proporciona una lista de strings de patrones y una única string de entrada. Necesitamos encontrar todas las coincidencias lo suficientemente buenas posibles de la string de entrada en la lista de strings de patrones.

Ejemplos:

Input : patterns = ['ape', 'apple', 
                  'peach', 'puppy'], 
          input = 'appel'
Output : ['apple', 'ape']

Podemos resolver este problema en python rápidamente usando la función integrada difflib.get_close_matches() .

¿Cómo funciona la función difflib.get_close_matches() en Python?

difflib.get_close_matches(palabra, posibilidades, n, corte) acepta cuatro parámetros en los que n, corte son opcionales. palabra es una secuencia para la que se desean coincidencias cercanas, posibilidades es una lista de secuencias con las que comparar palabra. El argumento opcional n (predeterminado 3) es el número máximo de coincidencias cercanas para devolver, n debe ser mayor que 0. El argumento opcional de corte (predeterminado 0.6) es un valor flotante en el rango [0, 1]. Las posibilidades que no puntúan al menos de manera similar a la palabra se ignoran.
Las mejores coincidencias (no más de n) entre las posibilidades se devuelven en una lista, ordenadas por puntuación de similitud, las más similares primero.

# Function to find all close matches of 
# input string in given list of possible strings
from difflib import get_close_matches
  
def closeMatches(patterns, word):
     print(get_close_matches(word, patterns))
  
# Driver program
if __name__ == "__main__":
    word = 'appel'
    patterns = ['ape', 'apple', 'peach', 'puppy']
    closeMatches(patterns, word)

Referencias: https://docs.python.org/2/library/difflib.html

Producción:

['apple', 'ape']

Publicación traducida automáticamente

Artículo escrito por Shashank Mishra 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 *