我想将网页存储在压缩文本文件(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。
答案 0 :(得分:4)
“文本文件(非二进制)”有点过于笼统。如果你的意思是一些
字节值(00,1A或其他)不能使用,那么任何二进制方法+
可以使用类似base64编码的东西。 (虽然我建议采用更有效的方法
来自Coroutine demo source)。
具体来说,你可以使用任何通用压缩机来压缩你的
基本文件,然后基本文件+目标文件,然后差异这些,你得到
字典压缩(二进制),然后可以转换为“文本”
与base64或yenc或其他什么。
或者,有一些编码器具有内置支持,例如
http://compression.ru/ds/ppmtrain.rar
http://code.google.com/p/lzham/
如果您确实希望将常用短语替换为引用,并且
所有其他事情都没有动过(有些暗示,但不等于“文字输出”),
您可以使用文本预处理器,如:
http://xwrt.sourceforge.net/
http://compression.ru/ds/liptify.rar
(还有更多的事情)。
也可以采用混合方法。您可以使用[1]中的通用LZ压缩器,例如lzma,然后用基于文本的东西替换其熵编码。 例如,在http://nishi.dreamhosters.com/u/lzmarec_v1_bin.rar中 有一个实用程序可以删除LZMA的熵编码,并且很容易转换 它的输出到文本。