用于压缩文本数据并将其存储为文本的库

时间:2011-03-07 13:09:43

标签: zlib compression huffman-code

我想将网页存储在压缩文本文件(CSV)中。为了实现最佳压缩,我想提供一组1000个网页。然后,图书馆应花一些时间为此内容创建最佳“词典”。一个明显的“字典”条目可能是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,它可以存储为%1或类似的东西,因为它几乎存在于所有网页上。通过创建这样的自定义字典,在我的情况下压缩率应该是99%。

我的问题是,在Windows上存在使用MIT或类似的自由许可的库吗?如果没有,你会推荐任何通用的压缩库。我尝试了一下zlib,但它输出了二进制数据。如果我将这个二进制数据转换成文本,我担心结果可能比原始文本更长。

编辑:我需要能够将文本存储在CSV文件中,并且仍然可以将它们导入数据库甚至Excel。

1 个答案:

答案 0 :(得分:4)

  1. “文本文件(非二进制)”有点过于笼统。如果你的意思是一些 字节值(00,1A或其他)不能使用,那么任何二进制方法+ 可以使用类似base64编码的东西。 (虽然我建议采用更有效的方法 来自Coroutine demo source)。

    具体来说,你可以使用任何通用压缩机来压缩你的 基本文件,然后基本文件+目标文件,然后差异这些,你得到 字典压缩(二进制),然后可以转换为“文本” 与base64或yenc或其他什么。

    或者,有一些编码器具有内置支持,例如
    http://compression.ru/ds/ppmtrain.rar
    http://code.google.com/p/lzham/

  2. 如果您确实希望将常用短语替换为引用,并且 所有其他事情都没有动过(有些暗示,但不等于“文字输出”), 您可以使用文本预处理器,如:
    http://xwrt.sourceforge.net/
    http://compression.ru/ds/liptify.rar (还有更多的事情)。

  3. 也可以采用混合方法。您可以使用[1]中的通用LZ压缩器,例如lzma,然后用基于文本的东西替换其熵编码。 例如,在http://nishi.dreamhosters.com/u/lzmarec_v1_bin.rar中 有一个实用程序可以删除LZMA的熵编码,并且很容易转换 它的输出到文本。