如何在Python中压缩文本,但输出字符串只包含大小写字母、数字、“.” (点)和“_”(下划线)。
这是一个可行的示例,但输出不包含任何小写字母或点,因此压缩效率会较低。
import base64
import zlib
def compress(s):
return base64.b32encode(zlib.compress(s,level=9)).decode("ascii").replace("=","-")
print(compress(b"abc"))
你为什么不试试base64?我将代码重写为以下内容:
import base64
import zlib
def compress_64(s):
return base64.b64encode(zlib.compress(s, level=9)).decode("ascii").replace(
"=", "-")
print(compress_64(b"abc"))
输出是
eNpLTEoGAAJNASc-
,与之前的输出相比,它更短并且包含更多字符,即PDNEWTCKAYAAETIBE4------
但是,base32 和 base64 都不是为压缩而设计的 - 它在编码后通常会占用更多空间。