基于 ahocorasick 实现 多模式字符串匹配

pyahocorasick 是一个用于快速、高效地执行精确或近似计算的多模式字符串搜索库。它允许您在输入文本中一次性查找多个关键字。该库支持预先构建字符串索引,并可将其保存到磁盘(例如通过pickle),以便后续重新加载和重复使用。此外,Pyahocorasick提供了一个基于Python的模块,它实现了Aho-Corasick算法,您可以像操作字典一样使用它,或将Trie树转换为自动机,从而实现高效的 Aho-Corasick 搜索。

安装

bash 复制代码
pip install pyahocorasick

使用

python 复制代码
import ahocorasick

# 构建AC自动机
automa = ahocorasick.Automaton()
words = ["你好", "好", "大家", "好吗", "吗"]
for idx, word in enumerate(words):
    automa.add_word(word, (idx, word))
# 必须调用以构建自动机
automa.make_automaton()

# 匹配文本
text = "你好吗"


for end_index, (insert_order, original_value) in automa.iter(text):
    print((end_index, insert_order, original_value))

# 匹配结果解释:
# (1, 0, '你好') 表示从索引1开始,匹配到了单词"你好"
# (1, 1, '好') 表示从索引1开始,匹配到了单词"好"
# (2, 3, '好吗') 表示从索引2开始,匹配到了单词"好吗"
# (2, 4, '吗') 表示从索引2开始,匹配到了单词"吗"

相关链接

https://github.com/WojciechMula/pyahocorasick
https://pyahocorasick.readthedocs.io/en/latest/

相关推荐
疋瓞2 小时前
C\C++\python对比_概览(1)
c语言·c++·python
不光头强2 小时前
Java网络爬虫
java·爬虫·python
2401_891482172 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
m0_743297422 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
技术工小李2 小时前
多人平板答题系统护航第24届汉语桥比赛
python
董可伦2 小时前
Flink DataStream2Table 总结
服务器·python·flink
2401_879693874 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
xixihaha132410 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
xixihaha132411 小时前
Python游戏中的碰撞检测实现
jvm·数据库·python