Python difflib模块
来源:互联网 发布:python 周期性任务 编辑:程序博客网 时间:2024/05/29 18:24
difflib -帮助进行差异化比较
最近写文件内容相互匹配的时候,在这个模块里面使用到了SequenceMatcher这个类,且其中的radio方法用于统计匹配度十分方便,接下来在各种网站和博客里查阅资料。。。这个模块里的类提供的方法,真的是很方便呀.. 而filecmp这个模块提供的则是对文件和目录进行简单的比较处理...
这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块。
下面简单介绍一下difflib下的各种类和方法:
class difflib.SequenceMatcher
这是可以用来比较任何类型片段的类,只要比较的片段是可hash的,都可以用来比较,使用非常灵活。他源于1980,s的“完形匹配算法”,并且进行了一系列的优化和改进。
通过对算法的复杂度比较,它由于原始的完形匹配算法,在最坏情况下有n的平方次运算,在最好情况下,具有线性的效率。
它具有自动垃圾启发式,可以将重复超过片段1%或者重复200次的字符作为垃圾来处理。可以通过将autojunk设置为false关闭该功能。
autojunk 参数新增于2.7.1版本。
class difflib.Differ
这个类用来比较文本里的行,并且产生可阅读的差异化结果。
它用以下符号来表示不同
Code
Meaning
'- '
仅在片段1中存在
'+ '
仅在片段2中存在
' '
片段1和2中都存在
'? '
存在疑问的
标识为?需要你通过人工的方式仔细比较他们的不同,他们产生的原因是源于混乱的制表符
class difflib.HtmlDiff
这个类用来创建一个html表格(或者包含html表格的文件)用来展示文件差异。他既可以进行全文本展示,也可以只展示上下文不同。
这个类的构造函数如下:
__init__(tabsize=8, wrapcolumn=None, linejunk=None, charjunk=IS_CHARACTER_JUNK)
tabsize表示制表符代表的空格个数,默认为8
wrapcolumn,可选参数,用来设置多少个字符时自动换行,默认None,为None时表示不自动换行
linejunk 和 charjunk,可选参数,在ndiff()中使用,
这个类的公共方法:
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
用来生成一个包含表格的html文件,其内容是用来展示差异。
fromlines 和tolines,用于比较的内容,格式为字符串组成的列表
fromdesc 和 todesc,可选参数,对应的fromlines,tolines的差异化文件的标题,默认为空字符串
context 和 numlines,可选参数,context 为True时,只显示差异的上下文,为false,显示全文,numlines默认为5,当context为True时,控制展示上下文的行数,当context为false时,控制不同差异的高亮之间移动时“next”的开始位置(如果设置为0,当移动懂顶端时,超链接会丢失引用地址)
make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
这个方法和make_file用法一样,唯一的区别在于它只生成了一个html表格字符串
python安装包的Tools/scripts/diff.py是关于他们使用的一个很好的例子,它可以用命令行来运行。
新增于python2.4
difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
用来比较a,b,a,b都是字符串列表。返回一个格式化文本的差异。
他是一个用来展示少量差异的好方法,这种变化,用前/后的样式进行展示,n默认为3,用来控制展示发现的差异数
默认情况下,差异控制行(*** or ---)用来把a,b的差异区隔开来,便于程序读写处理,如果不需要这样做的话,可以设置lineterm为"",这样,就会卸载一行里
如果格式化差异文本需要标题和修改时间信息,通过fromfile, tofile, fromfiledate, 和 tofiledate进行控制,如果不设置,默认为空
- python difflib模块
- Python difflib模块
- python difflib 模块
- python difflib模块讲解示例
- difflib模块
- Python 通过difflib模块实现文件内容差异对比
- Python自动化运维笔记(四):使用difflib模块实现文件内容差异对比
- python——关于difflib的学习
- Python 比较文本相似性(difflib,Levenshtein)
- [Python标准库]difflib——比较序列
- Python使用difflib对比两个文件操作实例
- python里使用difflib库的Differ来比较文本
- python里使用difflib库的unified_diff来比较文本
- python 商品名称相似度查找(difflib库和结巴分词的运用)
- python里使用difflib库的比较文本时丢弃不要的字符
- python里使用difflib库的比较功能把一个序列变成另外一个序列
- python模块 ---logging模块
- python模块-re模块
- poj3436 网络流
- hdu 6006 Engineer Assignment
- 读书02《微习惯》
- Qt如何显示一个动态的变量或者说定时刷新界面
- BZOJ 3140 消毒 (二进制枚举降维 二分图最大匹配)
- Python difflib模块
- Java连接MySQL数据库——含步骤和代码
- HDU 2112-HDU Today
- ConcurrentHashMap源码详解
- 进程和线程,vmstat,iostat,dstat,
- GTK显示GIF、GTK动画(图片连续播放)
- emoji表情存入数据库
- [FJOI2007]轮状病毒
- 9.08 笔记-抽象类与接口与多态