3.3 difflib--比较不同序列之间差异库
发布日期:2021-07-01 05:00:16 浏览次数:2 分类:技术文章

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

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

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

上一篇:3.3.1 SequenceMatcher对象
下一篇:3.2.5.10 识别中文的正则表达式

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月23日 12时18分07秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章