3.3.1 SequenceMatcher对象
发布日期:2021-07-01 05:00:17 浏览次数:2 分类:技术文章

本文共 1476 字,大约阅读时间需要 4 分钟。

difflib.SequenceMatcher(isjunk=None, a='', b='', autojunk=True) 

本函数是构造函数,主要创建任何类型序列的比较对象。

isjunk是关键字参数,主要设置过滤函数,比如想丢掉ab比较序列里特定的字符,就可以设置相应的函数,比如不要空格和跳格符:lambda x: x in " \t"

ab是比较序列。

autojunk是用来设置是否自动垃圾处理启用。它具有自动垃圾启发式,可以将重复超过片段1%或者重复200次的字符作为垃圾来处理。可以通过将autojunk设置为false关闭该功能。

 

set_seqs(a,b)

设置两个比较的序列。

 

set_seq1(a)

改变第一个比较序列,第二个比较序列保持不变。

 

set_seq2(b)

改变第二个比较序列,第一个比较序列保持不变。

 

find_longest_match(alo, ahi, blo, bhi) 

从比较序列a[alo:ahi]b[blo:bhi]里找到最长相同的交集序列。

如果isjunk没有设置,即是None时,此函数返回(i, j, k)元组,即是a[i:i+k]b[j:j+k]是相同的序列。

如果isjunk有设置,此函数也返回(i, j, k)元组,不过会跳过丢掉的字符进行比较。

如果此函数返回(alo, blo, 0)表示没有任何相同的序列,此函数返回一个命名的元组Match(a, b, size)

 

get_matching_blocks()

此函数返回多个描述ab序列相同部分的三元组的列表。每一个三元组(i, j, n)是表示a[i: i+n] == b[j: j+n],最后一个三元组例外,它表示为(len(a), len(b), 0)。在三元组里ij采用单调递增的方式,因此比较相同之后,永远是增加方向进行。

 

get_opcodes()

此函数每执行一次返回5个元素的元组,元组描述了从a序列变成b序列所经历的步骤。5个元素的元组表示为(tag, i1, i2, j1, j2),其中tag表示动作,i1表示序列a的开始位置,i2表示序列a的结束位置,j1表示序列b的开始位置,j2表示序列b的结束位置。

tag表示的字符串为:

replace 表示a[i1 : i2]将要被b[j1 : j2]替换。

delete  表示a[i1 : i2]将要被删除。

insert  表示b[j1 : j2]将被插入到a[i1 : i1]地方。

equal  表示a[i1 : i2] == b[j1 : j2]相同。

 

get_grouped_opcodes(n=3)

返回一个列表保存操作组,可以同时返回多个操作组。与get_opcodes()函数区别,就是此函数返回列表,而get_opcodes()只返回一个。

 

ratio()

返回一个度量两个序列的相似程度,值在[0, 1]之间。当没有调用过 get_matching_blocks() 或 get_opcodes() 时,调用此函数需要比较大的计算量。如果只是想大概计算,可以使用quick_ratio() 或 real_quick_ratio()函数,这样减少一些计算量。

 

quick_ratio()

返回一个大于ratio()函数返回相似度的值,比ratio()相对要快一些。

 

real_quick_ratio()

返回一个大于ratio()函数返回相似度的值,比ratio()速度更快一些。

 

蔡军生 微信号:shenzhencai  深圳

转载地址:https://mysoft.blog.csdn.net/article/details/48594319 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:reactos操作系统实现(140)
下一篇:3.3 difflib--比较不同序列之间差异库

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月12日 22时29分14秒