压缩句子

时间:2017-01-13 15:15:02

标签: python python-3.4 compression

我正在处理用户句子的压缩和解压缩代码。 我已经制作了这段代码:

import gzip
sentence = input(b"Please enter a sentence ")
varNameIn = (b"sentence")
varNameOut = gzip.compress(varNameIn)
print(varNameOut)
varNameDecon = gzip.decompress(varNameOut)
print(varNameDecon)

但似乎有些不对劲。它适用于:

的输出

b'请输入句子' gn h B' \ X1F \ x8b \ X08 \ x00Z \ xedxX \ X02 \ XFF + N \ + XCD I \ xcdKN \ X05 \ X00 \ xd5Nf \ x9d \ X08 \ X00 \ X00 \ X00' B'句子'

为什么会显示b'句子'而不是用户的句子,当它要求一个句子时,为什么它有b' '而不是请输入... 我被告知b' '将使句子在代码的未来步骤中压缩。 有帮助吗? 感谢

1 个答案:

答案 0 :(得分:2)

b"sentence"不会将sentence转换为bytes值。您需要encode a string to bytes。选择适合您用例的编解码器;这里编码为UTF-8可能是最好的,因为它可以编码所有Unicode,西方文本的合理小尺寸:

sentence = input("Please enter a sentence ")
varNameIn = sentence.encode('utf8')
varNameOut = gzip.compress(varNameIn)

请注意,input()始终会返回str类型,因此bytes提示不会更改。

请注意,再次解压缩数据时,您仍然会有bytes个对象。如果您想使用相同的编码将其重新转换为str对象,decode from bytes to str

varNameDecon = gzip.decompress(varNameOut)
print(varNameDecon.decode('utf-8'))
相关问题