最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 多模式字符串搜索 Aho-Corasick詳解

 更新時(shí)間:2025年01月19日 11:22:32   作者:言之。  
Aho-Corasick 算法是一種用于精確或近似多模式字符串搜索的高效算法,本文給大家介紹Python 多模式字符串搜索 Aho-Corasick的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧

ahocorasick.Automaton 是 Python 中 pyahocorasick 庫(kù)提供的一個(gè)類,用于實(shí)現(xiàn) Aho-Corasick 自動(dòng)機(jī)。Aho-Corasick 算法是一種用于精確或近似多模式字符串搜索的高效算法。

通過(guò) pip install pyahocorasick 安裝 pyahocorasick 庫(kù)。
并且,該模塊是用 C 編寫(xiě)的,安裝時(shí)需要有 C 編譯器來(lái)編譯本機(jī) Cpython 擴(kuò)展。

使用 ahocorasick.Automaton 類的一般步驟如下:

  • 導(dǎo)入 ahocorasick 庫(kù):import ahocorasick
  • 創(chuàng)建 Automaton 對(duì)象:a = ahocorasick.Automaton() 。
  • (可選)將字符串鍵及其關(guān)聯(lián)值添加到自動(dòng)機(jī),可作為 trie 樹(shù)使用。例如:
for idx, key in enumerate('heherhersshe'.split()):
    a.add_word(key, (idx, key))

調(diào)用 make_automaton() 方法完成并創(chuàng)建 Aho-Corasick 自動(dòng)機(jī):a.make_automaton() 。

創(chuàng)建好自動(dòng)機(jī)后,可以使用以下主要方法進(jìn)行搜索操作:

  • iter(string, (start, (end))):使用提供的輸入字符串執(zhí)行 Aho-Corasick 搜索過(guò)程。它返回一個(gè)迭代器,為在字符串中找到的鍵返回元組 (end_index, value),其中 end_index 是匹配結(jié)束的索引位置,value 是與匹配的鍵相關(guān)聯(lián)的值。
  • iter_long(string, (start, (end))):返回一個(gè)搜索最長(zhǎng)、非重疊匹配的迭代器(automaton_search_iter_long 類的對(duì)象)。

以下是一個(gè)使用 ahocorasick.Automaton 進(jìn)行多模式字符串搜索的示例代碼:

import ahocorasick as ah
a = ah.automaton()
with open('userdict.txt', 'r', encoding='utf-8') as f2:  # 加載文件
    keywords = (a.strip() for a in f2.readlines())  # 加載關(guān)鍵詞
    # 利用 add_word 方法將關(guān)鍵詞加入自動(dòng)機(jī)!
    for x in range(len(keywords)):
        a.add_word(keywords[x], (x, keywords[x]))  # 第二個(gè)參數(shù)為自定義的返回值
# 創(chuàng)建 aho-corasick 自動(dòng)機(jī)
a.make_automaton()
with open('jianjie.txt', 'r', encoding='utf-8') as f:  # 打開(kāi)要檢索文檔
    jianjie = f.read()  # 讀取正文(如果太多,可以分?jǐn)嗉虞d,分段檢索)
# 開(kāi)始查找,該方法匹配最長(zhǎng)的字符串
for item in a.iter_long(jianjie):
    print(item)
print('-' * 20)
# 開(kāi)始查找,該方法匹配所有字符串
for item in a.iter(jianjie):
    print(item)

在上述示例中,首先創(chuàng)建了一個(gè)自動(dòng)機(jī)對(duì)象 a,然后從文件中讀取關(guān)鍵詞,并使用 add_word 方法將關(guān)鍵詞添加到自動(dòng)機(jī)中。接著調(diào)用 make_automaton 方法創(chuàng)建 Aho-Corasick 自動(dòng)機(jī)。最后,通過(guò)打開(kāi)另一個(gè)文件讀取要搜索的正文,并使用 iter_longiter 方法進(jìn)行匹配查找,并打印出匹配的結(jié)果。

Aho-Corasick 自動(dòng)機(jī)的優(yōu)點(diǎn)包括能夠在一次運(yùn)行中找到給定集合所有字符串,適用于多模式字符串匹配的場(chǎng)景,例如網(wǎng)絡(luò)內(nèi)容過(guò)濾、版權(quán)檢測(cè)、病毒掃描等,在自然語(yǔ)言處理中查找特定詞匯或模式,以及生物信息學(xué)中在 DNA 或蛋白質(zhì)序列分析中尋找特定的序列模式等方面都有應(yīng)用。

到此這篇關(guān)于Python 多模式字符串搜索 Aho-Corasick詳解的文章就介紹到這了,更多相關(guān)Python 多模式字符串搜索內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中如何打包用戶自定義模塊

    python中如何打包用戶自定義模塊

    在本篇文章里小編給大家整理的是一篇關(guān)于python中如何打包用戶自定義模塊的相關(guān)文章,有興趣的朋友們可以參考下。
    2020-09-09
  • Python-OpenCV教程之圖像的位運(yùn)算詳解

    Python-OpenCV教程之圖像的位運(yùn)算詳解

    圖像的位運(yùn)算是指對(duì)圖像的數(shù)值按照二進(jìn)制值逐位進(jìn)行取反、與、或、異或操作,本文就帶大家了解相關(guān)知識(shí),需要的朋友可以參考下
    2021-06-06
  • Atom的python插件和常用插件說(shuō)明

    Atom的python插件和常用插件說(shuō)明

    這篇文章給大家分享了Atom的python插件和常用插件,有需要的朋友們可以學(xué)習(xí)參考下。
    2018-07-07
  • Python安裝Numpy和matplotlib的方法(推薦)

    Python安裝Numpy和matplotlib的方法(推薦)

    下面小編就為大家?guī)?lái)一篇Python安裝Numpy和matplotlib的方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • pandas 對(duì)series和dataframe進(jìn)行排序的實(shí)例

    pandas 對(duì)series和dataframe進(jìn)行排序的實(shí)例

    今天小編就為大家分享一篇pandas 對(duì)series和dataframe進(jìn)行排序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 基于OpenCv實(shí)現(xiàn)的人臉識(shí)別(附Python完整代碼)

    基于OpenCv實(shí)現(xiàn)的人臉識(shí)別(附Python完整代碼)

    人臉識(shí)別是基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù),下面這篇文章主要給大家介紹了關(guān)于如何基于OpenCv實(shí)現(xiàn)的人臉識(shí)別,文中還附Python完整代碼,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • python中查找excel某一列的重復(fù)數(shù)據(jù) 剔除之后打印

    python中查找excel某一列的重復(fù)數(shù)據(jù) 剔除之后打印

    python查找excel某一列的重復(fù)數(shù)據(jù),剔除之后打印,供大家學(xué)習(xí)參考
    2013-02-02
  • Python TensorFlow介紹與實(shí)戰(zhàn)

    Python TensorFlow介紹與實(shí)戰(zhàn)

    這篇文章介紹了Python TensorFlow介紹與實(shí)戰(zhàn),通過(guò)本文的介紹,我們不僅了解了TensorFlow的基本概念和安裝方法,還通過(guò)線性回歸和卷積神經(jīng)網(wǎng)絡(luò)的實(shí)例,深入探討了 TensorFlow 的使用技巧,TensorFlow 的強(qiáng)大功能和靈活性使其成為深度學(xué)習(xí)領(lǐng)域的重要工具,需要的朋友可以參考下
    2024-07-07
  • python讀取excel數(shù)據(jù)的詳細(xì)教學(xué)

    python讀取excel數(shù)據(jù)的詳細(xì)教學(xué)

    在Python中讀取Excel數(shù)據(jù)是一個(gè)常見(jiàn)的數(shù)據(jù)處理任務(wù),本文主要為大家詳細(xì)介紹了如何使用Python讀取Excel數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-01-01
  • 使用Django和Flask獲取訪問(wèn)來(lái)源referrer

    使用Django和Flask獲取訪問(wèn)來(lái)源referrer

    這篇文章主要介紹了使用Django和Flask獲取訪問(wèn)來(lái)源referrer,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04

最新評(píng)論

加查县| 西畴县| 阿鲁科尔沁旗| 扎囊县| 梨树县| 那坡县| 弋阳县| 和龙市| 克拉玛依市| 临洮县| 南平市| 喀喇| 中西区| 腾冲县| 菏泽市| 运城市| 三江| 兴仁县| 宁波市| 张掖市| 从化市| 侯马市| 乐山市| 长宁区| 元谋县| 康平县| 泸州市| 安图县| 扶沟县| 延长县| 枣强县| 德安县| 陇川县| 阿合奇县| 曲阜市| 金沙县| 斗六市| 金溪县| 灌阳县| 开远市| 甘孜县|