类difflib.SequenceMatcher(isjunk=None, a=‘‘, b=‘‘, autojunk=True)
本函数是构造函数,主要创建任何类型序列的比较对象。
isjunk是关键字参数,主要设置过滤函数,比如想丢掉a和b比较序列里特定的字符,就可以设置相应的函数,比如不要空格和跳格符:lambda x: x in " \t"。
a和b是比较序列。
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()
此函数返回多个描述a和b序列相同部分的三元组的列表。每一个三元组(i, j, n)是表示a[i: i+n] == b[j: j+n],最后一个三元组例外,它表示为(len(a), len(b), 0)。在三元组里i和j采用单调递增的方式,因此比较相同之后,永远是增加方向进行。
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 深圳
版权声明:本文为博主原创文章,未经博主允许不得转载。