一个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 HikariCP连接池Tomcat调试启用   java如何在javascript中访问JSON数组的元素?   jasper使用HttpServlet报告Java空白PDF   用于存储海量数据的java最佳集合   JBPM&springboot组织。流口水。坚持不懈jta。JtaTransactionManager在JNDI位置[java:comp/UserTransaction]未找到任何UserTransaction   java Grails maven插件需要Groovy 2.4.2   获取列表中访问最少的元素(Java 8)   java在IntelliJ中下载cn1lib不起作用   java Akka构造函数通过spring进行布线   swing在Java中创建JList时,如何更改条目的背景颜色?   为什么Java8Lambda允许访问非最终类变量?   javajavax。邮政MessaginException:无法连接到SMTP主机   java Android Webview高度在滚动后增加