您的位置:首页 > 产品设计 > UI/UE

3.3.1 SequenceMatcher对象

2015-09-20 08:54 363 查看
类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 深圳
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: