您的位置:首页 > 其它

3.3 difflib--比较不同序列之间差异库

2015-09-19 17:45 183 查看

3.3 difflib--比较不同序列之间差异库

本库主要提供一些类和一些函数来比较不同序列对象,提取出来差别部分,特别在文本方面的比较更加有用。例如在文件方面进行比较,在不同的格式下比较会产生不同的差别的结果,可以支持HTML文本比较,也可以支持纯文本比较和以及只产生修改的文本显示。对于文件目录和文件的比较,可以使用filecmp库来进行比较差别。

类difflib.SequenceMatcher

可以比较任何类型的序列对象的类。

类difflib.Differ

主要用来比较文本文件,可以一行一行地比较,产生出一个人能读懂的差异报告文本。每一行有差异时,采用下面的标记来标示出来:

标记

意义

‘-’

表示在第一个序列里存在此行

‘+’

表示在第二个序列里存在此行

‘ ’

表示在第一个和第二个序列都存在

‘?’

表示在两个序列都存在,但有差异,也就是变化的地方

类difflib.HtmlDiff

可以用此类来实现比较结果生成HTML的格式显示。

构造函数__init__(tabsize=8, wrapcolumn=None,

linejunk=None, charjunk=IS_CHARACTER_JUNK)

tabsize指定跳格的大小,默认为8个字符宽度。

wrapcolumn指定行号是否进行环绕显示。

linejunk和charjunk是传给ndiff() 函数的参数。

类函数make_file(fromlines, tolines, fromdesc='', todesc='', context=False, numlines=5)

本函数作用是实现fromlines和tolines进行比较,生成一个HTML表示的表格返回。

fromdesc是来源表头里显示的字符串。

todesc是目标表头里显示的字符串。

context是表示是否上下文比较,还是全文比较。

numlines是表示上下文比较的行数。

类函数make_table(fromlines, tolines, fromdesc='', todesc='',

context=False, numlines=5)

比较两个不同文本序列生产一个HTML的表格返回。

函数difflib.context_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n')

两个文件进行比较后,输出简单文本标记方式。每一行进行比较,如果有改变就在前面添加一个感叹号,表示此行已经作了修改。

函数difflib.get_close_matches(word, possibilities, n=3, cutoff=0.6)

从一个列表时查找最相似的字符串,通过列表返回。

word是需要查找的字符串。

possibilities是提供候选的列表集合。

n是最多返回几个相似的。

cutoff是指明相似程度,当小于这个相似程度的就不返回。

函数difflib.ndiff(a, b, linejunk=None, charjunk=IS_CHARACTER_JUNK)

比较a和b序列,然后返回一份差别文本。

linejunk是行过滤函数。

charjunk是字符过滤函数。

函数difflib.restore(sequence, which)

给个differ对象,可以从其中获取到原来比较序列1或序列2。

函数difflib.unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n')

比较两个序列,返回压缩的方式来表示差别的文本。

函数difflib.IS_LINE_JUNK(line)

用来判断是否忽略的行内容。如果line是空白行或者只包括#,就会返回True。

函数difflib.IS_CHARACTER_JUNK(ch)

用来判断是否忽略的字符。如果ch是空格或Tab符,就返回True。

蔡军生 微信号:shenzhencai 深圳
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: