Python zlib不压缩字符串?

Python zlib不压缩字符串?,python,compression,zlib,Python,Compression,Zlib,目前,我正在阅读python.org的python教程。我使用的是10.9,我正在尝试使用zlib库来压缩字符串。但是,len(压缩字符串)并不总是小于len(原始字符串)。我的翻译代码如下: >>> import zlib >>> s = 'the quick brown fox jumps over the lazy dog' >>> len(s) 43 >>> t = zlib.compress(s) >>

目前,我正在阅读python.org的python教程。我使用的是10.9,我正在尝试使用zlib库来压缩字符串。但是,
len(压缩字符串)
并不总是小于
len(原始字符串)
。我的翻译代码如下:

>>> import zlib
>>> s = 'the quick brown fox jumps over the lazy dog'
>>> len(s)
43
>>> t = zlib.compress(s)
>>> len(t)
50
>>> t
'x\x9c+\xc9HU(,\xcdL\xceVH*\xca/\xcfSH\xcb\xafP\xc8*\xcd-(V\xc8/K-R(\x01J\xe7$VU*\xa4\xe4\xa7\x03\x00a<\x0f\xfa'
>>> len(zlib.decompress(t))
43
>>> s2 = "something else i'm compressing"
>>> len(s2)
30
>>> t2 = zlib.compress(s2)
>>> len(t2)
37
>>> s3 = "witch which has which witches wrist watch"
>>> len(s3)
41
>>> t3 = zlib.compress(s3)
>>> len(t3)
37
导入zlib >>>s='敏捷的棕色狐狸跳过懒狗' >>>莱恩(s) 43 >>>t=zlib.compress(s) >>>蓝(t) 50 >>>t
'x\x9c+\xc9HU(,\xcdL\xceVH*\xca/\xcfSH\xcb\xafP\xc8*\xcd-(V\xc8/K-R(\x01J\xe7$VU*\xa4\xe4\xa7\x03\x00azlib压缩算法并不总是有效的:

>>> len(zlib.compress('ab'))
10
因为它需要添加元数据(标题、符号表、反向引用),这些元数据可能比您试图压缩的数据多。在更长的时间内,而不是随机数据上使用它,它可以很好地压缩数据:

>>> lorem = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit'
>>> len(lorem) * 100
9100
>>> len(zlib.compress(lorem * 100))
123

zlib压缩算法并不总是有效的:

>>> len(zlib.compress('ab'))
10
因为它需要添加元数据(标题、符号表、反向引用),这些元数据可能比您试图压缩的数据多。在更长的时间内,而不是随机数据上使用它,它可以很好地压缩数据:

>>> lorem = 'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit'
>>> len(lorem) * 100
9100
>>> len(zlib.compress(lorem * 100))
123
然而,len(压缩环)并不总是小于 len(原始字符串)

当然,这是不可能的。至少如果您希望始终能够无损地检索原始字符串

但是,deflate算法的扩展不会超过一个小的百分比,zlib头和尾部的扩展将增加六个字节。zlib头将其标识为一个zlib流,尾部提供对数据的完整性检查

然而,len(压缩环)并不总是小于 len(原始字符串)

当然,这是不可能的。至少如果您希望始终能够无损地检索原始字符串

但是,deflate算法的扩展不会超过一个小的百分比,zlib头和尾部的扩展将增加六个字节。zlib头将其标识为一个zlib流,尾部提供对数据的完整性检查