Python 计算增量的辅助函数


Python 的 `difflib` 模块用于计算差异。它用于比较文件,并可以以多种格式(包括 HTML、上下文和统一差异)生成有关文件差异的信息。

在使用之前,我们需要首先导入 `difflib` 模块:

import difflib

类 (difflib.SequenceMatcher)

此类用于比较任何类型的两个序列。它具有不同的方法。一些方法:

  • set_seqs(a, b) - 设置将要比较的序列文件。它计算并缓存有关第二个文件的详细信息。因此,对于匹配多个文件,我们应该重复设置第一个序列。

  • set_seq1(a) - 设置将要比较的第一个序列。

  • set_seq2(2) - 设置将要比较的第二个序列。

  • find_longest_match(alo, ahi, blo, bhi) - 查找在第一个序列的 alo 到 ahi 范围内和第二个序列的 blo 到 bhi 范围内哪个匹配块最长。

  • get_matching_blocks() - 查找按降序排列的匹配序列列表。

  • ratio() - 查找序列相似度的比率,以浮点值表示。

返回序列相似度的度量

要返回序列相似度的度量,请使用 `difflib` 模块的 `ratio()` 方法:

示例

import difflib s = difflib.SequenceMatcher(None, "abcd", "bcde") print("Ratio = ",s.ratio())

输出

Ratio = 0.75

返回比率的上限

要返回比率的上限,请运行以下代码:

示例

import difflib s = difflib.SequenceMatcher(None, "abcd", "bcde") print("Ratio = ",s.ratio()) print("Quick Ratio = ",s.quick_ratio()) print("Real Quick Ratio = ",s.real_quick_ratio())

输出

Ratio = 0.75
Quick Ratio = 0.75
Real Quick Ratio = 1.0

获取序列匹配的比率

要获取序列匹配的比率,以下是代码:

示例

import difflib myStr1 = 'Python Programming' myStr2 = 'Python Standard Library' # The SequenceMatcher compares sequences seq_match = difflib.SequenceMatcher(lambda x: x==' ', myStr1, myStr2) print("Ratio of the sequence matching = " + str(round(seq_match.ratio(), 3))) for match_block in seq_match.get_matching_blocks(): print(match_block)

输出

The ratio of the sequence matching is: 0.488
Match(a=0, b=0, size=7)
Match(a=8, b=13, size=1)
Match(a=11, b=19, size=2)
Match(a=18, b=23, size=0)

更新于:2022年8月11日

193 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告