欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python?Difflib庫(kù)強(qiáng)大的文字比較功能快速輕松查重

 更新時(shí)間:2024年01月22日 09:32:02   作者:曉飛的李?管窺程序  
這篇文章主要介紹了利用Python?Difflib庫(kù)強(qiáng)大的文字比較功能快速輕松查重實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

繼續(xù)我們的有趣的 Python 庫(kù)之旅 ——

一個(gè)小小的庫(kù),可能免去造輪子,
一個(gè)不起眼的功能,可能救我們于水火,
一個(gè)意想不到的方式,可能激發(fā)更多靈感……

假如你和小伙伴們齊心協(xié)力,花了一個(gè)周末的時(shí)間完成了一個(gè)文稿。但在最后審查稿件的時(shí)候,才發(fā)現(xiàn)你們各自的修改略有不同。無(wú)數(shù)的詞語(yǔ)新增了,句子改變了,甚至有部分段落完全不同。該,怎么辦?

你會(huì)一頁(yè)一頁(yè)地人工比對(duì),還是選擇一個(gè)聰明的工具,如同行外電影里的酷炫黑科技,一鍵搞定復(fù)雜的任務(wù)?

這時(shí),Python  的 difflib 庫(kù)豪氣現(xiàn)身,它擁有強(qiáng)大的文字比較功能,能幫你快速地找出不同點(diǎn),使整合過(guò)程變得輕松愉快。

什么是difflib

difflib 是 Python  標(biāo)準(zhǔn)庫(kù)的一部分,無(wú)需額外安裝即可使用。

這個(gè)庫(kù)由多個(gè)部分組成,主要提供了用于比較序列之間的差異和相似度計(jì)算的類和函數(shù)。

它可以用來(lái)比較文件、字符串等,并可以生成差異結(jié)果的多種報(bào)告,這樣我們便可以直觀地看到不同之處。

由于 difflib 是隨  Python  標(biāo)準(zhǔn)發(fā)行版自帶的,它支持幾乎所有主流的  Python3  版本。雖然這個(gè)庫(kù)可能不像其它第三方庫(kù)(如 git 中的 diff)那樣名聲顯赫,但在處理文本比對(duì)、合并等問(wèn)題時(shí), difflib 是一個(gè)相當(dāng)有用且強(qiáng)大的工具。結(jié)合  Python  的簡(jiǎn)易性和靈活性,依舊在眾多情況下顯得尤為重要。

你可以無(wú)需離開(kāi)  Python  環(huán)境,就能完成大量的文本比對(duì)工作。

比較字符序列

SequenceMatcher 是 difflib 中的一個(gè)類,它可以用來(lái)比較兩個(gè)序列(比如字符串)之間的相似度。它使用 Ratcliff/Obershelp  算法[1] 來(lái)計(jì)算兩個(gè)序列之間的相似度。

from difflib import SequenceMatcher

a = """Apple is the symbol of Apple Inc. 
and also a delicious and tasty fruit."""

b = """Apple is the symbol of Apple Inc 
and is also delicious and tasty fruit.
...
"""

seq_match = SequenceMatcher(None, a, b)
ratio = seq_match.ratio()
print(ratio)  # 查看兩個(gè)字符串的相似度

# 輸出的相似度將是一個(gè)介于  0  到 1  之間的小數(shù),在我們的例子中可能會(huì)輸出:
# 0.6666666666666666

創(chuàng)建差異報(bào)告

unified_diff 函數(shù)可以創(chuàng)建一個(gè)字符串的“統(tǒng)一差異”報(bào)告,這種格式在許多版本控制系統(tǒng)中使用。

from difflib import unified_diff

diff = unified_diff(a.splitlines(), b.splitlines(), lineterm='')
print('\n'.join(list(diff)))

這將打印出兩個(gè)字符串之間的差異:

--- 
+++ 
@@ -1,2 +1,3 @@
-Apple is the symbol of Apple Inc. 
-and also a delicious and tasty fruit.
+Apple is the symbol of Apple Inc 
+and is also delicious and tasty fruit.
+...

找出最佳匹配

當(dāng)你有一個(gè)字符串和一個(gè)列表,想找出列表中與該字符串最相似的項(xiàng)時(shí),你可以使用 get_close_matches 函數(shù)。

from difflib import get_close_matches

words = ["apple", "apprehensive", "application", "apply", "appliance"]
best_match = get_close_matches('appel', words)
print(best_match)  # 輸出最相似的單詞列表

# 這將返回:
# ['apple', 'apply']

生成  HTML  差異報(bào)告

如果你更傾向于視覺(jué)化的比較報(bào)告,difflib 提供了 HtmlDiff 類,可以用來(lái)生成一個(gè)  HTML  文檔來(lái)顯示兩個(gè)序列的差異。

from difflib import HtmlDiff

d = HtmlDiff()
html_diff = d.make_file(a.splitlines(), b.splitlines()) # a,b 在前面定義了
with open("diff.html", "w", encoding="utf-8") as f:
    f.write(html_diff)

用瀏覽器打開(kāi) diff.html,可能有如下顯示:

時(shí)習(xí)之

為了使內(nèi)容更加深入,我為你準(zhǔn)備了一個(gè)簡(jiǎn)單的練習(xí)。在本節(jié)中,你將嘗試使用 difflib 中各種不同的功能,來(lái)體驗(yàn)一下它的強(qiáng)大之處。

  • 打開(kāi)你的  Python  環(huán)境,并導(dǎo)入 difflib

  • 創(chuàng)建兩個(gè)不同的短文本文件 text1.txt 和 text2.txt,寫(xiě)入一些只有部分內(nèi)容不同的文本。

  • 使用 difflib 讀取這兩個(gè)文件,并打印出它們之間的統(tǒng)一差異。

  • 嘗試 get_close_matches 函數(shù),在一個(gè)詞匯列表中查找給定單詞的最佳匹配。

  • 最后,生成并查看這兩個(gè)文本文件的  HTML  差異報(bào)告。

通過(guò)這些練習(xí),你將更加熟悉  difflib  庫(kù)的功能和使用場(chǎng)景,并能更好地運(yùn)用它解決真實(shí)世界的問(wèn)題。

總結(jié)

在這篇教程中,我們了解并實(shí)踐了  Python  的 difflib 標(biāo)準(zhǔn)庫(kù),探索了它在比較文本內(nèi)容上的強(qiáng)大能力。無(wú)論是對(duì)文件做版本對(duì)比、還是尋找字符串之間的相似程度,difflib 都能提供便利且直接的解決方案。通過(guò)事前的學(xué)習(xí)和實(shí)戰(zhàn)的練習(xí),相信你現(xiàn)在已經(jīng)能夠有效地運(yùn)用這個(gè)庫(kù)來(lái)處理你可能碰到的許多與文本比較相關(guān)的任務(wù)了。記住,實(shí)踐是最好的學(xué)習(xí)方法,所以,不要猶豫,揮舞起你的鍵盤(pán),開(kāi)始創(chuàng)造一些魔法般的腳本,利用 difflib 解決問(wèn)題,讓工作更加高效。

希望本教程對(duì)你有所啟發(fā),愿你在編程的道路上越走越遠(yuǎn)。如果你對(duì) difflib 還有什么疑問(wèn),不妨去閱讀 Python  官方文檔[2] 來(lái)獲取更講究的細(xì)節(jié)。

參考資料

[1]Ratcliff/Obershelp  算法:

 https://en.wikipedia.org/wiki/Gestalt_pattern_matching#cite_note-NIST-2 

[2]官方文檔: https://docs.python.org/3/library/difflib.html 

以上就是利用Python Difflib庫(kù)強(qiáng)大的文字比較功能快速輕松查重的詳細(xì)內(nèi)容,更多關(guān)于Python Difflib庫(kù)查重的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!比心!

相關(guān)文章

  • python Opencv將圖片轉(zhuǎn)為字符畫(huà)

    python Opencv將圖片轉(zhuǎn)為字符畫(huà)

    這篇文章主要為大家詳細(xì)介紹了python Opencv將圖片轉(zhuǎn)為字符畫(huà)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python中列表的基本操作匯總

    Python中列表的基本操作匯總

    這篇文章主要介紹了python中列表的一些基本操作,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-10-10
  • python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法

    python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法

    今天小編就為大家分享一篇python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python通過(guò)zlib實(shí)現(xiàn)壓縮與解壓字符串的方法

    python通過(guò)zlib實(shí)現(xiàn)壓縮與解壓字符串的方法

    這篇文章主要介紹了python通過(guò)zlib實(shí)現(xiàn)壓縮與解壓字符串的方法,較為詳細(xì)的介紹了zlib的用法及使用zlib.compressobj和zlib.decompressobj對(duì)文件進(jìn)行壓縮解壓的方法,需要的朋友可以參考下
    2014-11-11
  • Python開(kāi)發(fā)必須掌握的Pip使用全攻略

    Python開(kāi)發(fā)必須掌握的Pip使用全攻略

    在這篇文章中,我們將深入探討Python的主要包管理工具——Pip,包括Pip的基本概念、安裝和配置、中國(guó)國(guó)內(nèi)鏡像源的使用等,需要的可以參考一下
    2023-07-07
  • 初步解析Python中的yield函數(shù)的用法

    初步解析Python中的yield函數(shù)的用法

    這篇文章主要介紹了Python中的yield函數(shù),yield函數(shù)是生成器中的一個(gè)常用函數(shù),本文來(lái)自于IBM官方網(wǎng)站的開(kāi)發(fā)者文檔的翻譯,需要的朋友可以參考下
    2015-04-04
  • 使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    今天小編就為大家分享一篇使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例

    Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python列表生成器的循環(huán)技巧分享

    Python列表生成器的循環(huán)技巧分享

    這篇文章主要介紹了Python列表生成器的循環(huán)技巧分享,本文講解了列表生成器中一個(gè)循環(huán)和二個(gè)循環(huán)的不同寫(xiě)法,需要的朋友可以參考下
    2015-03-03
  • Python實(shí)現(xiàn)交通數(shù)據(jù)可視化的示例代碼

    Python實(shí)現(xiàn)交通數(shù)據(jù)可視化的示例代碼

    本文主要分享了Python交通數(shù)據(jù)分析與可視化的實(shí)戰(zhàn)!其中主要是使用TransBigData庫(kù)快速高效地處理、分析、挖掘出租車GPS數(shù)據(jù),感興趣的可以了解一下
    2023-04-04

最新評(píng)論