python压缩_python压缩存储

这段代码展示了一个用Python实现的前缀树(Trie树)类Treeclass,用于存储和恢复文本。通过插入句子的单词列表,树的每个节点代表一个词,遍历树可以恢复原始句子。程序读取‘a.txt’文件并重建源文件的内容。
摘要由CSDN通过智能技术生成

展开全部

下面的 Tree class 代码实现了一个前缀62616964757a686964616fe78988e69d8331333337383865树(只实现了插入和遍历操作)。

树的每一个节点都对应一个key, 一个key就是句中的一个词。

遍历函数 traverse 本身是一个generator 函数,它会不断的返回(yield)完整的键值(即组成一句话的所有词组),通过词组就可以恢复出原始的句子。

#!/usr/bin/python2

import collections

class Tree(collections.OrderedDict):

def __init__(self, keys=None):

super(Tree, self).__init__()

self.keys = ()

if keys is not None:

self.insert(keys)

def insert(self, keys):

assert type(keys) is list, "Expect a list of keys"

d = self

for k in keys:

d[k] = d.get(k, Tree())

d = d[k]

d.keys = tuple(keys)

def traverse(self):

if len(self.keys) > 0:

yield self.keys

for subtree in self.values():

for x in subtree.traverse():

yield x

mytree = Tree()

# process source file to generate an internal tree

for line in open("a.txt", "r"):

line = line.decode("utf-8").strip()

mytree.insert(line.split())

# traverse the tree to recover the source file

for ks in mytree.traverse():

print ' '.join(ks)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值