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

Python3多模式匹配問題的實(shí)現(xiàn)

 更新時(shí)間:2025年01月08日 10:48:07   作者:言之。  
Aho-Corasick是一種高效的多模式字符串匹配算法,適用于敏感詞檢測、文本過濾等,本文就來介紹一下Python3多模式匹配,具有一定的參考價(jià)值,感興趣的可以了解一下

在 Python 3 中,Aho-Corasick 是一種高效的多模式字符串匹配算法,它可以一次性在文本中查找多個(gè)模式字符串。這個(gè)算法以一種線性時(shí)間復(fù)雜度進(jìn)行搜索,非常適合處理多關(guān)鍵字匹配問題,比如敏感詞檢測、文本過濾、網(wǎng)絡(luò)爬蟲中 URL 解析等。

Python 中可以使用第三方庫 ahocorasick 來實(shí)現(xiàn)該算法。

主要特點(diǎn)

  • 多模式匹配:一次性在文本中查找多個(gè)模式。
  • 快速構(gòu)建字典:構(gòu)造的自動(dòng)機(jī)可以存儲(chǔ)模式字符串。
  • 線性時(shí)間匹配:查找的時(shí)間復(fù)雜度為 (O(n + m)),其中 (n) 是文本長度,(m) 是所有模式字符串長度總和。
  • 典型應(yīng)用
    • 敏感詞檢測
    • 日志或流式數(shù)據(jù)的模式識(shí)別
    • 文本過濾或替換

安裝 ahocorasick 庫

pip install pyahocorasick

使用示例

以下示例展示了如何使用 ahocorasick 進(jìn)行多模式匹配:

1. 構(gòu)建 Aho-Corasick 自動(dòng)機(jī)

import ahocorasick

# 初始化自動(dòng)機(jī)
automaton = ahocorasick.Automaton()

# 添加模式字符串
patterns = ["he", "she", "his", "hers"]
for idx, pattern in enumerate(patterns):
    automaton.add_word(pattern, (idx, pattern))

# 構(gòu)建自動(dòng)機(jī)
automaton.make_automaton()

2. 匹配模式字符串

text = "ushers"

# 在文本中查找模式
for end_index, (idx, pattern) in automaton.iter(text):
    start_index = end_index - len(pattern) + 1
    print(f"Found pattern '{pattern}' from index {start_index} to {end_index}")

輸出:

Found pattern 'she' from index 1 to 3
Found pattern 'he' from index 2 to 3
Found pattern 'hers' from index 2 to 5

3. 檢查某個(gè)字符串是否存在

if "his" in automaton:
    print("Pattern 'his' exists in the automaton")

4. 匹配敏感詞(實(shí)際用例)

sensitive_words = ["bad", "ugly", "harm"]
automaton = ahocorasick.Automaton()

for word in sensitive_words:
    automaton.add_word(word, word)

automaton.make_automaton()

# 檢測敏感詞
text = "This is a bad example of an ugly behavior."
matches = []
for _, word in automaton.iter(text):
    matches.append(word)

print("Sensitive words found:", matches)

輸出:

Sensitive words found: ['bad', 'ugly']

ahocorasick 的核心方法

  • add_word(word, value): 將一個(gè)模式字符串添加到自動(dòng)機(jī)中。
  • make_automaton(): 構(gòu)建自動(dòng)機(jī),必須在添加完所有模式后調(diào)用。
  • iter(text): 在給定文本中查找模式,返回匹配的結(jié)束位置及模式對(duì)應(yīng)的值。
  • get(item): 獲取某個(gè)模式的值。
  • __contains__(word): 檢查某個(gè)模式是否存在于自動(dòng)機(jī)中。

總結(jié)

ahocorasick 是一種高效解決多模式匹配問題的工具,特別適用于需要對(duì)大規(guī)模文本進(jìn)行快速匹配和搜索的場景。如果你需要處理類似問題,Aho-Corasick 是非常值得學(xué)習(xí)和應(yīng)用的算法之一。

到此這篇關(guān)于Python3多模式匹配問題的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python3多模式匹配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Nose框架編寫測試用例方法

    Python Nose框架編寫測試用例方法

    這篇文章主要介紹了Python Nose框架編寫測試用例方法,需要的朋友可以參考下
    2017-10-10
  • Python高級(jí)語法之推導(dǎo)式+迭代器+生成器案例代碼

    Python高級(jí)語法之推導(dǎo)式+迭代器+生成器案例代碼

    文章介紹了Python中的推導(dǎo)式和生成器,推導(dǎo)式用于簡潔地構(gòu)建容器,而生成器是一種惰性求值的迭代器,適用于處理大數(shù)據(jù)集,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Python字典 dict幾種遍歷方式

    Python字典 dict幾種遍歷方式

    這篇文章主要給大家分享的是Python字典 dict幾種遍歷方式,文章主要介紹使用 for key in dict遍歷字典、使用for key in dict.keys () 遍歷字典的鍵等內(nèi)容,需要的朋友可以參考一下,希望對(duì)你有所幫助
    2021-11-11
  • Python mlxtend庫數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)補(bǔ)充工具功能探索

    Python mlxtend庫數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)補(bǔ)充工具功能探索

    這篇文章主要介紹了Python mlxtend庫數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)補(bǔ)充工具功能探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python基礎(chǔ)之變量和數(shù)據(jù)類型

    python基礎(chǔ)之變量和數(shù)據(jù)類型

    這篇文章主要介紹了python的變量和數(shù)據(jù)類型,實(shí)例分析了Python中返回一個(gè)返回值與多個(gè)返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python實(shí)戰(zhàn)之多種音樂格式批量轉(zhuǎn)換

    Python實(shí)戰(zhàn)之多種音樂格式批量轉(zhuǎn)換

    Pydub是一個(gè)基于ffmpeg的Python音頻處理模塊,封裝了許多ffmpeg底層接口,因此用它來做音樂歌曲文件格式轉(zhuǎn)換會(huì)非常方便。今天給大家介紹它的音樂文件格式轉(zhuǎn)換功能,幾乎支持所有音樂音頻格式,需要的可以參考一下
    2022-06-06
  • Python將Markdown文件轉(zhuǎn)換為Word(docx)完整教學(xué)

    Python將Markdown文件轉(zhuǎn)換為Word(docx)完整教學(xué)

    在實(shí)際開發(fā)中,經(jīng)常會(huì)遇到將 Markdown 文檔轉(zhuǎn)換為 Word(.docx)的需求,下面小編就和大家詳細(xì)介紹一下Python將Markdown文件轉(zhuǎn)換為Word的完整步驟吧
    2025-12-12
  • 用Python從0開始實(shí)現(xiàn)一個(gè)中文拼音輸入法的思路詳解

    用Python從0開始實(shí)現(xiàn)一個(gè)中文拼音輸入法的思路詳解

    中文輸入法是一個(gè)歷史悠久的問題,但也實(shí)在是個(gè)繁瑣的活,不知道這是不是網(wǎng)上很少有人分享中文拼音輸入法的原因,接下來通過本文給大家分享使用Python從0開始實(shí)現(xiàn)一個(gè)中文拼音輸入法,需要的朋友可以參考下
    2019-07-07
  • Python數(shù)據(jù)封裝與私有屬性應(yīng)用案例

    Python數(shù)據(jù)封裝與私有屬性應(yīng)用案例

    本文介紹了數(shù)據(jù)封裝在面向?qū)ο缶幊讨械闹匾?以及Python中實(shí)現(xiàn)數(shù)據(jù)封裝的多種方法,包括命名約定、名稱修飾和使用@property裝飾器,通過實(shí)際例子展示了如何在銀行賬戶系統(tǒng)中應(yīng)用這些技術(shù),感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • PyChon中關(guān)于Jekins的詳細(xì)安裝(推薦)

    PyChon中關(guān)于Jekins的詳細(xì)安裝(推薦)

    這篇文章主要介紹了PyChon中關(guān)于Jekins的詳細(xì)安裝(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論

平遥县| 孙吴县| 策勒县| 安泽县| 清徐县| 桃园市| 商水县| 巴楚县| 建宁县| 读书| 邓州市| 中宁县| 芜湖县| 富源县| 寿宁县| 治县。| 独山县| 迭部县| 久治县| 出国| 常熟市| 息烽县| 保山市| 东乡族自治县| 黎平县| 巴青县| 都兰县| 龙陵县| 岳普湖县| 鄂州市| 海口市| 湖北省| 江陵县| 霍山县| 平原县| 宁波市| 惠安县| 庄河市| 宁陕县| 横山县| 台山市|