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() - 计算序列相似性的比率,返回float类型的值。

返回两个序列的相似度的度量

要返回两个序列的相似度的度量,使用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)

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程