Как мне сжать сжатие строки в Python?Как мне сжать сжатие строки в Python?
gzip.GzipFile
Существует, но это для файловых объектов - как насчет простых строк?
Как мне сжать сжатие строки в Python?Как мне сжать сжатие строки в Python?
gzip.GzipFile
Существует, но это для файловых объектов - как насчет простых строк?
Выберите подходящий модуль от http://docs.python.org/library/archiving.html - либо gzip, либо zlib, в зависимости от ваших конкретных потребностей.
Я вижу, что zlib имеет несколько уровней сжатия. Каков уровень, который использует gzip? – bellpeace
звонок, вы перешли по ссылке на документацию для gzip? «Аргумент уровня сжатия является целым числом от 1 до 9, контролирующим уровень сжатия: 1 является самым быстрым и производит наименьшее сжатие, а 9 является самым медленным и производит наибольшее сжатие. По умолчанию используется [УДАЛЕНО]». Я позволю вам проверить фактическое значение самостоятельно. :) –
По умолчанию 9, самый медленный. –
Самый простой способ это zlib
encoding:
compressed_value = s.encode("zlib")
Затем распаковать его:
plain_string_again = compressed_value.decode("zlib")
- это строка? – dcousens
@ Даниэль: Да, 's' является объектом Python 2.x типа' str'. –
См. [Стандартные кодировки] (http://docs.python.org/2/library/codecs.html#standard-encodings), где он получил это (прокрутите вниз до __ "codecs" __). Также доступно: 's.encode ('rot13')', 's.encode ('base64')' – bobobobo
Если вы хотите, чтобы произвести полный gzip
-совместимый двоичную строку с заголовком и т.д., вы можете использовать gzip.GzipFile
вместе с StringIO
:
import StringIO
import gzip
out = StringIO.StringIO()
with gzip.GzipFile(fileobj=out, mode="w") as f:
f.write("This is mike number one, isn't this a lot of fun?")
out.getvalue()
# returns '\x1f\x8b\x08\x00\xbd\xbe\xe8N\x02\xff\x0b\xc9\xc8,V\x00\xa2\xdc\xcc\xecT\x85\xbc\xd2\xdc\xa4\xd4"\x85\xfc\xbcT\x1d\xa0X\x9ez\x89B\tH:Q!\'\xbfD!?M!\xad4\xcf\x1e\x00w\xd4\xea\xf41\x00\x00\x00'
Life-saver. Просто восхитительно. Я знаю, что это старо, но спасибо! –
Это должен быть принятый ответ. – ForeverWintr
Противоположность этого является: 'Защита gunzip_text (текст): входной_файла = StringIO.StringIO() infile.write (текст) с gzip.GzipFile (fileobj = входной_файл, режим = "г"), как F: е .rewind() f.read() return out.getvalue() – fastmultiplication
s = "a long string of characters"
g = gzip.open('gzipfilename.gz', 'w', 5) # ('filename', 'read/write mode', compression level)
g.write(s)
g.close()
Я предполагаю, что речь шла о сжатии строки в памяти без необходимости записывать ее на диск в процессе. В противном случае ваш ответ будет абсолютно правильным. – Alfe
Первый результат для 'python gzip' http://docs.python.org/library/gzip.html (возможно, вы могли бы попробовать немного?) – KevinDTimm
@KevinDTimm, этот документ упоминает только 'StringIO', но делает не совсем объяснить, как это сделать. Поэтому, задавая этот вопрос, он полностью действителен, ИМХО. Однако еще несколько проб, прежде чем спросить и рассказать о них, было бы неплохо. – Alfe
@Alfe - вопрос был закрыт 4 года назад по той же причине, что и мой комментарий - OP не предпринял никаких усилий для поиска в первую очередь. – KevinDTimm