python - ¿Cómo usar SequenceMatcher para encontrar similitud entre dos cadenas?
difflib (2)
De los documentos:
La clase SequenceMatcher tiene este constructor:
class difflib.SequenceMatcher(isjunk=None, a='''', b='''', autojunk=True)
El problema en tu código es que al hacer
seq=difflib.SequenceMatcher(a,b)
está pasando a
valor como para isjunk
y b
como un valor para a
, dejando el valor predeterminado para b
. Esto resulta en una relación de 0.0
.
Una forma de superar esto (ya mencionado por Lennart) es pasar explícitamente None
como primer parámetro adicional para que todos los argumentos de palabras clave tengan asignados los valores correctos.
Sin embargo, acabo de encontrar, y quería mencionar otra solución, que no toca el argumento isjunk
pero usa el método set_seqs()
para especificar las diferentes secuencias.
>>> import difflib
>>> a = ''abcd''
>>> b = ''ab123''
>>> seq = difflib.SequenceMatcher()
>>> seq.set_seqs(a.lower(), b.lower())
>>> d = seq.ratio()*100
>>> print d
44.44444444444444
import difflib
a=''abcd''
b=''ab123''
seq=difflib.SequenceMatcher(a=a.lower(),b=b.lower())
seq=difflib.SequenceMatcher(a,b)
d=seq.ratio()*100
print d
Utilicé el código anterior pero el resultado obtenido es 0.0. ¿Cómo puedo obtener una respuesta válida?
Olvidó el primer parámetro para SequenceMatcher.
>>> import difflib
>>>
>>> a=''abcd''
>>> b=''ab123''
>>> seq=difflib.SequenceMatcher(None, a,b)
>>> d=seq.ratio()*100
>>> print d
44.4444444444