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

Python中匹配模糊的字符串問題分析

 更新時間:2023年09月13日 14:50:24   作者:python學(xué)習(xí)者0  
這篇文章主要介紹了Python中匹配模糊的字符串的過程,我們將學(xué)習(xí)如何使用process 模塊,該模塊允許我們在模糊字符串邏輯的幫助下有效地匹配或提取字符串,需要的朋友可以參考下

如何使用thefuzz 庫,它允許我們在python中進(jìn)行模糊字符串匹配。此外,我們將學(xué)習(xí)如何使用process 模塊,該模塊允許我們在模糊字符串邏輯的幫助下有效地匹配或提取字符串。

使用thefuzz 模塊來匹配模糊字符串

這個庫在舊版本中有一個有趣的名字,因為它有一個特定的名字,這個名字被重新命名。所以現(xiàn)在是由不同的庫來維護(hù);但是,它目前的版本叫做thefuzz ,所以這就是你可以通過下面的命令來安裝的。

pip install thefuzz

但是,如果你在網(wǎng)上看例子,你會發(fā)現(xiàn)一些例子的舊名稱是fuzzywuzzy 。所以,它已經(jīng)不再被維護(hù)并且過時了,但是你可能會發(fā)現(xiàn)一些用這個名字的例子。

thefuzz 庫是基于 ,所以你必須用這個命令來安裝它。python-Levenshtei

pip install python-Levenshtein

而如果你在安裝過程中遇到一些問題,你可以使用下面的命令,如果再次遇到錯誤,那么你可以在google上搜索,找到相關(guān)的解決方案。

pip install python-Levenshtein-wheels

本質(zhì)上,模糊匹配字符串就像使用regex或沿著兩個字符串的比較。在模糊邏輯的情況下,你的條件的真值可以是0 和1 之間的任何實數(shù)。

因此,基本上,不是說任何東西是True 或False ,你只是給它在0 到1 之間的任何值。它是通過使用距離度量計算兩個字符串之間的不相似性,其形式是一個稱為距離的值。

使用給定的字符串,你使用一些算法找到兩個字符串之間的距離。一旦你完成了安裝過程,你必須從thefuzz 模塊中導(dǎo)入fuzz 和process 。

from thefuzz import fuzz, process

在使用fuzz ,我們將手動檢查兩個字符串之間的不相似性。

ST1='Just a test'
ST2='just a test'
print(ST1==ST2)
print(ST1!=ST2)

它將返回一個布爾值,但以一種模糊的方式,你會得到這些字符串的相似程度的百分?jǐn)?shù)。

False
True

模糊字符串匹配允許我們以模糊的方式更有效、更快速地完成這項工作。假設(shè)我們有一個例子,有兩個字符串,其中一個字符串與大寫的J (如上所述)不相同。

如果我們現(xiàn)在去調(diào)用ratio() 函數(shù),它給我們一個相似性的度量,那么這將為我們提供一個相當(dāng)高的比率,即91 ,而不是100 。

from thefuzz import fuzz, process
print(fuzz.ratio(ST1, ST2))

輸出:

91

如果字符串更加延長,例如,如果我們不只是改變一個字符,而是改變一個完全不同的字符串,那么看看它的回報,看一看。

ST1='This is a test string for test'
ST2='There aresome test string for testing'
print(fuzz.ratio(ST1,ST2))

現(xiàn)在可能會有一些相似之處,但會很75 ;這只是一個簡單的比率,并不復(fù)雜。

75

我們還可以繼續(xù)嘗試像部分比例這樣的東西。例如,我們有兩個字符串,我們想確定它們的分?jǐn)?shù)。

ST1='There are test'
ST2='There are test string for testing'
print(fuzz.partial_ratio(ST1,ST2))

使用partial_ratio() ,我們會得到100%,因為這兩個字符串有相同的子字符串(There are test)。

在ST2 ,我們有一些不同的詞(字符串),但這并不重要,因為我們看的是部分比率或個別部分,但簡單的比率并不類似。

100

假設(shè)我們有相似的字符串,但有不同的順序;然后,我們使用另一個度量。

CASE_1='This generation rules the nation'
CASE_2='Rules the nation This generation'

兩種情況下,在該短語的相同含義上有完全相同的文字,但使用ratio() ,就會有相當(dāng)大的不同,而使用partial_ratio() ,就會有不同。

如果我們通過token_sort_ratio() ,這將是100%,因為它基本上是完全相同的文字,但順序不同。因此,這就是token_sort_ratio() ,該函數(shù)將單個標(biāo)記進(jìn)行排序,它們的順序并不重要。

print(fuzz.ratio(CASE_1,CASE_2))
print(fuzz.partial_ratio(CASE_1,CASE_2))
print(fuzz.token_sort_ratio(CASE_1,CASE_2))

輸出:

47
64
100

現(xiàn)在,如果我們用另一個詞來改變一些詞,我們會有一個不同的數(shù)字,但基本上,這是一個比率;它不關(guān)心個別標(biāo)記的順序。

CASE_1='This generation rules the nation'
CASE_2='Rules the nation has This generation'
print(fuzz.ratio(CASE_1,CASE_2))
print(fuzz.partial_ratio(CASE_1,CASE_2))
print(fuzz.token_sort_ratio(CASE_1,CASE_2))

輸出:

44
64
94

token_sort_ratio() 也是不同的,因為它有更多的詞在里面,但我們也有一個叫做token_set_ratio() 的東西,一個集合包含每個標(biāo)記只有一次。

所以,它出現(xiàn)的頻率并不重要;讓我們看看一個例子字符串。

CASE_1='This generation'
CASE_2='This This generation generation generation generation'
print(fuzz.ratio(CASE_1,CASE_2))
print(fuzz.partial_ratio(CASE_1,CASE_2))
print(fuzz.token_sort_ratio(CASE_1,CASE_2))
print(fuzz.token_set_ratio(CASE_1,CASE_2))

我們可以看到一些相當(dāng)?shù)偷姆謹(jǐn)?shù),但是我們使用token_set_ratio() 函數(shù)得到了100%的分?jǐn)?shù),因為我們有兩個令牌,This 和generation 存在于兩個字符串中。

使用process 模塊,以高效的方式使用模糊字符串匹配

不僅有fuzz ,還有process ,因為process 是有幫助的,可以使用這種模糊匹配從一個集合中提取出來。

例如,我們準(zhǔn)備了幾個列表項來演示。

Diff_items=['programing language','Native language','React language',
        'People stuff', 'This generation', 'Coding and stuff']

其中一些是非常相似的,你可以看到(母語或編程語言),現(xiàn)在我們可以去挑選最好的個別匹配。

我們可以手動操作,只需評估分?jǐn)?shù),然后挑選出最優(yōu)秀的人選,但我們也可以用process 。要做到這一點,我們必須調(diào)用process 模塊中的extract() 函數(shù)。

它需要幾個參數(shù),第一個是目標(biāo)字符串,第二個是你要提取的集合,第三個是限制,將匹配或提取的內(nèi)容限制為兩個。

例如,如果我們想提取像language ,在這種情況下,選擇母語和編程語言。

print(process.extract('language',Diff_items,limit=2))

輸出:

[('programing language', 90), ('Native language', 90)]

問題是,這不是NLP(自然語言處理);這背后沒有智能;它只是看單個標(biāo)記。因此,舉例來說,如果我們使用programming 作為目標(biāo)字符串并運行這個。

第一個匹配將是programming language ,但第二個匹配將是Native language ,這將不是編碼。

即使我們有編碼,因為從語義上講,編碼更接近于編程,但這并不重要,因為我們在這里沒有使用AI。

Diff_items=['programing language','Native language','React language',
        'People stuff', 'Hello World', 'Coding and stuff']
print(process.extract('programing',Diff_items,limit=2))

PYTHON 復(fù)制 全屏

輸出:

[('programing language', 90), ('Native language', 36)]

另一個最后的例子是這是如何有用的;我們有一個龐大的書庫,想找到一本書,但我們不知道確切的名字或如何調(diào)用它。

在這種情況下,我們可以使用extract() ,在這個函數(shù)里面,我們將把fuzz.token_sort_ratio 傳給scorer 參數(shù)。

LISt_OF_Books=['The python everyone volume 1 - Beginner',
               'The python everyone volume 2 - Machine Learning',
               'The python everyone volume 3 - Data Science',
               'The python everyone volume 4 - Finance',
               'The python everyone volume 5 - Neural Network',
               'The python everyone volume 6 - Computer Vision',
               'Different Data Science book',
               'Java everyone beginner book',
               'python everyone Algorithms and Data Structure']
print(process.extract('python Data Science',LISt_OF_Books,limit=3,scorer=fuzz.token_sort_ratio))

我們只是傳遞它,我們并沒有調(diào)用它,現(xiàn)在,我們在這里得到了最高的結(jié)果,我們得到了另一本數(shù)據(jù)科學(xué)書作為第二個結(jié)果。

輸出:

[('The python everyone volume 3 - Data Science', 63), ('Different Data Science book', 61), ('python everyone Algorithms and Data Structure', 47)]

這就是如何是相當(dāng)準(zhǔn)確的,如果你有一個項目,你必須以模糊的方式找到它,它可以相當(dāng)有幫助。我們也可以用它來實現(xiàn)你的程序自動化。

還有一些額外的資源,你可以使用github和stackoverflow找到更多幫助。

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

相關(guān)文章

  • Pycharm配置anaconda環(huán)境圖文教程

    Pycharm配置anaconda環(huán)境圖文教程

    這篇文章主要介紹了Pycharm配置anaconda環(huán)境圖文教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python測試開源工具splinter安裝與使用教程

    Python測試開源工具splinter安裝與使用教程

    Splinter是一個使用Python測試Web應(yīng)用程序的開源工具,可以自動化瀏覽器操作,使用Splinter可以使用pyhton腳本來實現(xiàn),具體安裝及操作方法跟隨小編一起看看吧
    2021-07-07
  • 基于Python實現(xiàn)一個圖片水印批量添加工具

    基于Python實現(xiàn)一個圖片水印批量添加工具

    本文詳細(xì)介紹了使用 Python開發(fā) 給圖片加水印的工具,該工具基于 Pillow 和 tkinter 庫構(gòu)建,可解決單圖處理耗時、專業(yè)軟件操作復(fù)雜的問題,文中提供完整可運行代碼,并給出參數(shù)校驗、字體兼容、常見報錯解決等實用內(nèi)容,需要的朋友可以參考下
    2025-10-10
  • 使用Python在Word文檔中添加,刪除和回復(fù)批注

    使用Python在Word文檔中添加,刪除和回復(fù)批注

    在文檔協(xié)作與審閱場景中,高效管理批注是提升團(tuán)隊效率的關(guān)鍵環(huán)節(jié),下面我們就來看看如何使用Python在Word文檔中實現(xiàn)添加、刪除和回復(fù)批注的操作吧
    2025-03-03
  • Python中numpy數(shù)組真值判斷的實現(xiàn)

    Python中numpy數(shù)組真值判斷的實現(xiàn)

    在Python編程中,經(jīng)常需要對數(shù)組進(jìn)行真值判斷,本文就來介紹一下Python中numpy數(shù)組真值判斷的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 在vscode中配置python環(huán)境過程解析

    在vscode中配置python環(huán)境過程解析

    這篇文章主要介紹了在vscode中配置python環(huán)境過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Pandas告警UserWarning:pandas?only?supports?SQLAlchemy?connectable處理方式

    Pandas告警UserWarning:pandas?only?supports?SQLAlchemy?conn

    這篇文章主要給大家介紹了關(guān)于Pandas告警UserWarning:pandas only supports SQLAlchemy connectable的處理方式,文中還分享了pandas還有哪些userwarning,對大家學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-02-02
  • Python依賴包管理工具uv安裝與使用詳解

    Python依賴包管理工具uv安裝與使用詳解

    UV 是一個新興的 Python包安裝和依賴管理工具,憑借其用 Rust 編寫的高效實現(xiàn),在速度和資源占用方面顯著優(yōu)于傳統(tǒng)的pip和 virtualenv,這篇文章給大家介紹Python依賴包管理工具uv安裝使用詳解,感興趣的朋友一起看看吧
    2025-08-08
  • python str轉(zhuǎn)json的具體步驟

    python str轉(zhuǎn)json的具體步驟

    使用Python內(nèi)置的json模塊,可以將str轉(zhuǎn)換為JSON,本文給大家介紹python str轉(zhuǎn)json的具體步驟,文中補(bǔ)充介紹了Python-字符串str和json格式的轉(zhuǎn)換問題,感興趣的朋友一起看看吧
    2024-01-01
  • python隨機(jī)打印成績排名表

    python隨機(jī)打印成績排名表

    這篇文章主要為大家詳細(xì)介紹了python隨機(jī)打印成績排名表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

赣州市| 崇明县| 阿克苏市| 江津市| 临沧市| 永顺县| 呈贡县| 剑阁县| 松潘县| 忻城县| 资中县| 博白县| 乐平市| 乌海市| 苗栗县| 砚山县| 万州区| 绩溪县| 定兴县| 白朗县| 曲阜市| 九寨沟县| 聂荣县| 岳阳市| 延吉市| 会宁县| 塔城市| 肥城市| 祁连县| 高青县| 宁强县| 昆山市| 隆化县| 驻马店市| 沅江市| 新竹市| 赤壁市| 特克斯县| 丰城市| 甘肃省| 衡水市|