El módulo Python de dfflib incluye varias funciones para evaluar la comparación de secuencias, se puede usar para comparar archivos y puede crear información sobre variaciones de archivos en diferentes formatos, incluidos HTML y contexto y diferencias unificadas.
contiene varias clases para realizar varias comparaciones entre secuencias:
Coincidencia de secuencia de clase
Es una clase muy flexible para hacer coincidir pares de secuencias de cualquier tipo. Esta clase contiene varias funciones que se analizan a continuación:
- El método ratio() de esta clase devuelve la relación de similitud entre los dos argumentos pasados. La relación de similitud se determina utilizando la siguiente fórmula.
2*X/Y
Donde X es el número de coincidencias similares y
Y es el total de elementos presentes en ambas secuencias.
Ejemplo 1:
Python3
# import required module import difflib # assign parameters par1 = ['g', 'f', 'g'] par2 = 'gfg' # compare print(difflib.SequenceMatcher(None, par1, par2).ratio())
Producción:
1.0
Ejemplo 2:
Python3
# import required module import difflib # assign parameters par1 = 'Geeks for geeks!' par2 = 'geeks' # compare print(difflib.SequenceMatcher(None, par1, par2).ratio())
Producción:
0.47619047619047616
Ejemplo 3:
Python3
# import required module import difflib # assign parameters par1 = 'gfg' par2 = 'GFG' # compare print(difflib.SequenceMatcher(None, par1, par2).ratio())
Producción:
0.0
- El método get_matching_blocks() de esta clase devuelve una lista de tripletas que describen subsecuencias coincidentes. Cada triple tiene la forma (i, j, n), y significa que a[i:i+n] == b[j:j+n] .
Ejemplo 1:
Python3
# import required module import difflib # assign parameters par1 = 'Geeks for geeks!' par2 = 'geeks' # compare matches = difflib.SequenceMatcher( None, par1, par2).get_matching_blocks() for ele in matches: print(par1[ele.a:ele.a + ele.size])
Producción:
geeks
Ejemplo 2:
Python3
# import required module import difflib # assign parameters par1 = 'GFG' par2 = 'gfg' # compare matches = difflib.SequenceMatcher( None, par1, par2).get_matching_blocks() for ele in matches: print(par1[ele.a:ele.a + ele.size])
Producción:
Como no hay subsecuencias coincidentes entre GFG y gfg. Por lo tanto, no se muestra ninguna salida.
- Método get_close_matches(): este método devuelve el mejor carácter o grupo de columnas de coincidencias de caracteres. El término es una secuencia en la que se necesitan similitudes cercanas (generalmente una string) y las posibilidades son un conjunto de secuencias para términos coincidentes (principalmente una lista de strings).
Ejemplo :
Python3
# import required module import difflib # assign parameters string = "Geeks4geeks" listOfStrings = ["for", "Gks", "G4g", "geeks"] # find common strings print(difflib.get_close_matches(string, listOfStrings))
Producción:
['geeks']
Clase diferente
Esta clase se utiliza para hacer coincidir secuencias en forma de líneas de texto y crear variaciones o deltas legibles por humanos. Cada línea del delta Differ comienza con un código de dos letras:
Código | Sentido |
---|---|
‘-‘ | línea única para la secuencia 1 |
‘+’ | línea única para la secuencia 2 |
‘ ‘ | línea común a ambas secuencias |
‘? ‘ | la línea no está presente en ninguna secuencia de entrada |
Las siguientes son las funciones contenidas dentro de esta clase:
Ejemplo 1:
Python3
# import required module from difflib import Differ # assign parameters par1 = 'Geeks' par2 = 'geeks!' # compare parameters for ele in Differ().compare(par1, par2): print(ele)
Producción:
- G + g e e k s + !
Ejemplo 2:
Python3
# import required module from difflib import Differ # assign parameters par1 = ['Geeks','for','geeks!'] par2 = 'geeks!' # compare parameters for ele in Differ().compare(par1, par2): print(ele)
Producción:
- G + g e e k s + !
- método ndiff(): ,comparado
Ejemplo 1:
Python3
# import required module import difflib # assign parameters par1 = 'Geeks' par2 = 'geeks!' # compare parameters for ele in difflib.ndiff(par1, par2): print(ele)
Producción:
- G + g e e k s + !
Ejemplo 2:
Python3
# import required module import difflib # assign parameters par1 = ['Geeks','for','geeks!'] par2 = 'geeks!' # compare parameters for ele in difflib.ndiff(par1, par2): print(ele)
Producción:
- Geeks - for - geeks! + g + e + e + k + s + !
- Método context_diff(): las diferencias de contexto son una forma conveniente de mostrar solo las líneas que se han desplazado, con unas pocas líneas de contexto. Las mejoras se ven en el estilo antes/después. El número de líneas de fondo se establece en n, que se establece en tres de forma predeterminada.
Ejemplo 1:
Python3
# import required module import difflib # assign parameters par1 = 'Geeks' par2 = 'geeks!' # compare parameters for ele in difflib.context_diff(par1, par2): print(ele)
Producción:
***
—
***************
*** 1,5 ****
! GRAMO
mi
mi
k
s
— 1,6 —-
! gramo
mi
mi
k
s
+ !
Ejemplo 2:
Python3
# import required module import difflib # assign parameters par1 = ['Geeks', 'for', 'geeks!'] par2 = 'geeks!' # compare parameters for ele in difflib.context_diff(par1, par2): print(ele)
Producción:
***
—
***************
*** 1,3 ****
! Frikis
! por
! frikis!
— 1,6 —-
! gramo
! mi
! mi
! k
! s
! !
Publicación traducida automáticamente
Artículo escrito por riturajsaha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA