smaz – Compresor ASCII para pequeños textos



Los algoritmos convencionales de comprensión de datos son eficientes cuando de grandes cantidades se trata; pero, ¿qué hay de pequeños textos? Por ejemplo, mensajes los cuales queremos reducir su tamaño para enviarlos a través de una conexión TCP, o simplemente al momento de almacenarlos.

>>> import zlib
>>> a = "http://www.recursospython.com/"
>>> b = zlib.compress(a)
>>> len(a)
30
>>> len(b)
38

Los datos ocupan más espacio estando comprimidos. Efectivamente no es una buena opción.

smaz es una pequeña librería que provee un algoritmo de compresión para textos pequeños. El proyecto original escrito en C se encuentra en este enlace. Opera reemplazando nomenclaturas convencionales por pequeños caracteres, de modo que el texto comprimido resulte de menor tamaño.

Una vez descargado el paquete desde PyPI, deberán compilarlo utilizando distutils y, luego, instalarlo.

python setup.py build
python setup.py install

Usuarios de Microsoft Windows que cuenten con el compilador MinGW, deberán indicarlo de la siguiente forma:

python setup.py build --compiler=mingw32

En caso de obtener un error por la opción -mno-cygwin, deberás dirigirte al archivo Lib/distutils/cygwincompiler.py y reemplazar:

        if self.gcc_version < '4' or is_cygwingcc():
            no_cygwin = ' -mno-cygwin'
        else:
            no_cygwin = ''

Por simplemente:

        no_cygwin = ''

Si no tienes ningún compilador, puedes descargar el archivo smaz.pyd desde este enlace y colocarlo en la carpeta Lib dentro del directorio de instalación de Python.

El módulo cuenta con únicamente dos funciones: compress y decompress.

>>> import smaz
>>> a = "http://www.recursospython.com/"
>>> b = smaz.compress(a)
>>> len(a)
30
>>> len(b)
16
>>> smaz.decompress(b)
'http://www.recursospython.com/'

smaz ha reducido nuestra cadena en un 50%.



Deja un comentario