[New-bugs-announce] [issue39249] difflib SequenceMatcher 200 char length limitation for ratio calculation

Daniel Pezoa report at bugs.python.org
Tue Jan 7 14:42:59 EST 2020


New submission from Daniel Pezoa <danieladportas at gmail.com>:

I am using the SequenceMatcher object of the difflib library and I have noticed that a drastic failure occurs when the text strings exceed 200 characters

Source code:
=====================================================================

from difflib import SequenceMatcher

def main():
    # Throw a value of 7% when they are almost equal for having more than 200 characters
    text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las manos"
    text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las manos"
    m = SequenceMatcher(None, text1, text2)
    x = m.ratio()
    porcentaje = (int)(x * 100)
    print("{}\n\n{}\n\n{}\n\nBad: {}%\n\n".format(text1, text2, x, porcentaje))

    # Throw the expected value of 99% for having less than 200 characters
    text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las"
    text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las"
    text1 = "aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas"
    text2 = "aceite y pedir viendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas"
    m = SequenceMatcher(None, text1, text2)
    x = m.ratio()
    porcentaje = (int)(x * 100)
    print("{}\n\n{}\n\n{}\n\nGood: {}%".format(text1, text2, x, porcentaje))


if __name__== "__main__":
    main()


Output:
======================================================================

aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las manos

aceite y pedir viendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas y encendidas que no podan desprenderse ni arrancarse sin quemarse las manos

0.0794044665012407

Bad: 7%


aceite y pez hirviendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas

aceite y pedir viendo que vena de la plataforma y de la cual salan tambin muchsimas flechas rodeadas de estopas alquitranadas

0.9800796812749004

Good: 98%

----------
components: Library (Lib)
messages: 359534
nosy: Daniel Pezoa
priority: normal
severity: normal
status: open
title: difflib SequenceMatcher 200 char length limitation for ratio calculation
type: behavior
versions: Python 3.6

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39249>
_______________________________________


More information about the New-bugs-announce mailing list