difflib: Python 比較資料集

luckzack發表於2024-05-09

difflib 是一個專注於比較資料集(尤其是字串)的 Python 模組。為了具體瞭解您可以使用此模組完成的幾件事,讓我們檢查一下它的一些最常見的函式。

SequenceMatcher

SequenceMatcher 是一個比較兩個字串並根據它們的相似性返回資料的函式。透過使用 ratio(),我們將能夠根據比率/百分比量化這種相似性

語法:

SequenceMatcher(None, string1, string2)

下面這個簡單的例子展示了該函式的作用:

from difflib import SequenceMatcher

phrase1 = "Tandrew loves Trees."
phrase2 = "Tandrew loves to mount Trees."
similarity = SequenceMatcher(None, phrase1, phrase2)
print(similarity.ratio())
# Output: 0.8163265306122449

get_close_matches

接下來是 get_close_matches,該函式返回與作為引數傳入的字串最接近的匹配項。
語法:

get_close_matches(word, possibilities, result_limit, min_similarity)

下面解釋一下這些可能有些混亂的引數:

  • word 是函式將要檢視的目標單詞。
  • possibilities 是一個陣列,其中包含函式將要查詢的匹配項並找到最接近的匹配項。
  • result_limit 是返回結果數量的限制(可選)。
  • min_similarity 是兩個單詞需要具有的最小相似度才能被函式視為返回值(可選)。

下面是它的一個使用示例:

from difflib import get_close_matches

word = 'Tandrew'
possibilities = ['Andrew', 'Teresa', 'Kairu', 'Janderson', 'Drew']

print(get_close_matches(word, possibilities))
# Output: ['Andrew']

除此之外還有幾個是您可以檢視的屬於 Difflib 的其他一些方法和類:unified_diffDifferdiff_bytes

相關文章