当前位置:  开发笔记 > 编程语言 > 正文

Python:在大型字符串中查找部分字符串匹配

如何解决《Python:在大型字符串中查找部分字符串匹配》经验,为你挑选了1个好方法。

我对在Python中实现自动完成感兴趣.例如,当用户键入字符串时,我想在磁盘上显示名称以该字符串开头的文件子集.

什么是一种有效的算法来查找匹配大型语料库中某些条件的字符串(比如数十万个字符串)?就像是:

matches = [s for s in allfiles if s.startswith(input)]

我希望条件灵活; 例如.只要输入中的所有字母都以相同的顺序出现在s中,而不是严格的startwith,它就是匹配.什么比我在这里展示的蛮力方法更好?



1> Brian..:

对于精确匹配,通常实现这样的方法是将您的语料库存储在trie中.我们的想法是将每个字母存储为树中的节点,链接到单词中的下一个字母.找到匹配只是走在树上,并显示当前位置的所有孩子.例如."猫","牛"和"汽车"将存储为:

  a--t
 / \ 
c   r
 \
  o--w

当你获得交流时,你从c节点开始,a然后将你带到c/a节点(子节点"t"和"r",将cat和car作为你的完成).

请注意,您还需要标记完整单词的节点来处理作为其他子串的名称(例如"car"和"cart")

要获得所需的模糊匹配,您可能需要进行一些更改.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有