考虑包含许多重复子字符串的许多(数百或数百万)相当短(约100个ascii字符)字符串。我想在Python程序中使用字符串,但压缩它们以节省空间。 大多数压缩算法(如Lempel-Ziv(LZ))使用查找表来编码压缩数据。 有没有办法使用现有的压缩库(如zlib,zlib module)来执行此操作?在伪代码中,为了压缩数据,可以进行调用
table = zlib.makeTable( data )
foreach string:
compressedString = zlib.compressString( table, string )
然后存储压缩的字符串。
答案 0 :(得分:0)
它不像你说的那样有效,但有一种方法可以做我认为你要求的事情。 zlib有一个函数deflateSetDictionary()
,您可以使用它来为压缩器填充32K数据,希望这些数据代表您尝试压缩的短字符串。您可以使用样本字符串和/或部分样本字符串构建它。