压缩一个句子

Compress a Sentence

我正在研究用户句子的压缩和解压缩代码。 我做了这个代码:

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' ' 将使句子在代码的未来步骤中压缩。 有什么帮助吗? 谢谢

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() 总是 returns 一个 str 类型,给它一个 bytes 提示不会改变它。

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

varNameDecon = gzip.decompress(varNameOut)
print(varNameDecon.decode('utf-8'))