Как сжать или сжать строку в Python
Я делаю "скрипт" Python, который отправляет строку в веб-сервис (в C#). Мне нужно сжать или сжать эту строку, потому что данные о пропускной способности и МБ ограничены (да, в столицах, потому что они очень ограничены).
Я думал о преобразовании его в файл, а затем сжать файл. Но я ищу метод для непосредственного сжатия строки.
Как я могу сжать или сжать строку?
1 ответ
Решение
Как насчет zlib?
import zlib
a = "this string needs compressing"
a = zlib.compress(a)
print zlib.decompress(a) #outputs original contents of a
Вы также можете использовать sys.getsizeof(obj)
чтобы увидеть, сколько данных занимает объект до и после сжатия.
import sys
import zlib
text=b"""This function is the primary interface to this module along with
decompress() function. This function returns byte object by compressing the data
given to it as parameter. The function has another parameter called level which
controls the extent of compression. It an integer between 0 to 9. Lowest value 0
stands for no compression and 9 stands for best compression. Higher the level of
compression, greater the length of compressed byte object."""
# Checking size of text
text_size=sys.getsizeof(text)
print("\nsize of original text",text_size)
# Compressing text
compressed = zlib.compress(text)
# Checking size of text after compression
csize=sys.getsizeof(compressed)
print("\nsize of compressed text",csize)
# Decompressing text
decompressed=zlib.decompress(compressed)
#Checking size of text after decompression
dsize=sys.getsizeof(decompressed)
print("\nsize of decompressed text",dsize)
print("\nDifference of size= ", text_size-csize)