Od docs:
Klasa SequenceMatcher ma tego konstruktora:
class difflib.SequenceMatcher(isjunk=None, a='', b='', autojunk=True)
Problem w kodzie jest, że wykonując
seq=difflib.SequenceMatcher(a,b)
jesteś przejazdem a
jako wartość dla isjunk
i b
jako wartość dla a
, pozostawiając domyślne wartości ''
dla b
. Daje to stosunek 0.0
.
Jednym ze sposobów na pokonanie tego problemu (wspomnianego już przez Lennarta) jest jawne przekazanie None
jako dodatkowego pierwszego parametru, aby wszystkie argumenty słów kluczowych miały przypisane prawidłowe wartości.
Jednak ja po prostu znaleźć, a chciałem wspomnieć innego rozwiązania, które nie dotykać isjunk
argumentu ale wykorzystuje metodę set_seqs()
określić różne sekwencje.
>>> import difflib
>>> a = 'abcd'
>>> b = 'ab123'
>>> seq = difflib.SequenceMatcher()
>>> seq.set_seqs(a.lower(), b.lower())
>>> d = seq.ratio()*100
>>> print d
44.44444444444444
https://docs.python.org/3/library/difflib.html#sequencematcher-objects –