一个c实现的后缀树包

csuffixtree的Python项目详细描述


简介

这是一个后缀树数据结构LIB,用Python包在C++中实现。

除了构造树之外,这个库还提供了构造查询树以加快查询字符串的速度。

安装并构建

从pypi安装

运行pip install csuffixtree

建造

您可以在Linux或Windows上构建它。

安装python包

  1. 在windows中构建suffixtreepybinding解决方案
  2. 在Linux上,您应该转到linux目录,然后运行make python
  3. 在suffixtreepy目录下。运行python setup.py install

如何使用

你可以用下面的方法构造一个后缀树。

from suffixtree import *
tree = SuffixTree(True,["abc","123","321"])
tree.addStrings(["xyz","abcd"])
print(tree.findString("1"))
print(tree.findString("a"))

如果您完成了向后缀树插入字符串,并且希望查询速度非常快 您可以这样做:

# convert tree to query tree, this release a part of memory
qtree = tree.createQueryTree()
qtree.cacheNodes() # take some time to cache intermediate nodes
qtree.findString("a")

为了简单起见,您还可以编写

# do not preserve string
qtree = SuffixQueryTree(False,["abc","abcd","123","321"])
idx = qtree.findStringIdx("abc") # you cannot use findString now
print(idx)

序列化

suffixquerytree可以序列化并反序列化到文件a bytes对象。 例如:

# do not preserve string
qtree = SuffixQueryTree(False,["abc","abcd","123","321"])
idx = qtree.findStringIdx("abc") # you cannot use findString now
print(idx)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用哪个地图/集合?   bluej Java:计算税   由于性能问题,java双精度字符串替代方案   java Eclipse CDT生成设置因重新启动而丢失   如何在java控制台中显示字节流值   java获取url地址,其中是包含我的页面的iframe   java 403禁止的spring启动API调用错误?   如果一个方法返回true,java将停止计时器   使用JavaNIO获取文件创建日期   在Java中从整数转换为二进制时保留整个字节的字符串   java AspectJ&Maven警告:“未应用……中定义的建议?”   java为什么我得到3,我不应该得到+7   java当一个方法包含多个返回的if语句时,如何从该方法中获取返回值?   在运行时循环java(scan.nextLine()!="$")   java配置休眠。cfg。春天的xml   java使用HtmlUnit模拟用户,错误   java CLI如何持续检查更改   java最大素因子(返回)