python difflib

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

http://docs.python.org/library/difflib.html