原创

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mysoft.blog.csdn.net/article/details/48576863

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指定行号是否进行环绕显示。

linejunkcharjunk是传给ndiff() 函数的参数。

 

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

本函数作用是实现fromlinestolines进行比较,生成一个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) 

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

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  深圳

文章最后发布于: 2015-09-19 17:45:19
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览