LZW紧缩算法的基本原理:提取原始文本文件数据中的差别字符,基于这些字符建立一个编译表,然后用编译表中的字符的索引来替换原始文本文件数据中的响应字符,削减原始数据大小
第一次完成的时刻是用C# 和js用于数据紧缩 ,当时刚毕业,是依据伪码写的,当时挺痛楚的,厥后想一想照样挺有意义的:)
#encoding = utf-8
import string
def lzw_compress(s="ababcbababaaaaaaa"):
"""
举行lzw 紧缩
"""
dic = {}
for i in string.ascii_letters:
dic[i]=i
result = ''
key = s[0]
#举行向后编码的起始值
dic_index = 129
for i in range(1,len(s)):
v = s[i]
key += v
if dic.has_key(key):
continue
else:
print key,
dic[key] = unichr(dic_index)
dic_index+=1
result += dic.get(key[0:-1])
#print key[0:-1],result.encode("utf-8")
key = v
return result
r = lzw_compress()
print "result is:" ,r.encode("utf-8")
ab ba abc cb bab baba aa aaa aaaa result is: ab*c*
*a**
感兴趣的同砚,能够写个解压的算法,有点像破译暗码,挺有意义的。注重基于编码表