difflib主要用于比较两个序列的不同,常见于字符串的比较,可以对差异生成报告。SequenceMatcher 主要用于找两者相似部分,以及两者不同的转换方法,而 Differ 更注重于比较两者的区别并标记,HtmlDiff 注重把两者的区别以 HTML 的形式表现出来

模块内定义了三个类:SequenceMatcher、Differ、HtmlDiff

1、Differ([linejunk[, charjunk]]):类初始化有两个可选参数 linejunk 接受一个只有一个字符串参数的函数,代表忽略的字符串,charjunk 接受一个单一字符的函数,代表忽略的字符

类内方法:

compare(a,b) :两个序列必须是单独的用 \n 分割的字符串,例如从 file.readlines() 获得。

2、HtmlDiff (tabsize=8, wrapcolumn=None, linejunk=None, charjunk=IS_CHARACTER_JUNK):类初始化有四个可选参数,tabsize=8,wrapcolumn=none,linejunk 和 charjunk 同上

类内方法:

make_file 和 make_table (fromlines, tolines [, fromdesc][, todesc][, context][, numlines]):对 fromlines 至 tolines 之间的文本进行比较,分别返回完整的 HTML 文件和表,from/todesc 代表文件头部字符串,一般为空,context 和 numlines 一般默认,红的都不懂。。

3、SequenceMatcher(isjunk=None, a='', b='', autojunk=True) :isjunk 可以为 none 或是接受一个单一序列的函数,该函数只会在元素符合垃圾时返回真。

类内方法:

set_seqs(a,b),set_seq1(a),set_seq2(b):类会对第二个序列对象进行计算并缓存详细信息,所以在对一个序列进行多次比较时,可以将其设置为第二个参数

find_longest_match(alo,ahi,blo,bhi):从 a[alo:ahi] 和 b[blo:bhi] 中找到最长的匹配

get_matching_blocks():返回三个元素的列表,包含第一个和最后一个的匹配,第三个元素是a,b的长度

get_opcodes():获得从a转变至b的方法,有4种方法('replace' , 'delete', 'equal', 'insert')

get_grouped_opcodes([n]):获得转变n行方法的生成器

ratio():a与b的相似度,如果没有运行过get_matching_blocks()或者get_opcodes(),这个方法很耗时间,可用以下两个方法代替

quick_ratio():快速的计算

real_quick_ratio():最快的计算,不准

模块内方法:

context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm]):比较 a 和 b,返回一个 context diff 格式的生成器,将两个文件完全分开输出(每个文件的文件名在内容上方),在每行前面加上对应标记

ndiff(a, b[, linejunk][, charjunk]):比较 a 和 b,返回一个 Differ 格式的生成器,将两者差异逐行对比输出

unified_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm]):比较 a 和 b ,返回一个 unified_diff 格式的生成器,将两个文件部分分开输出(两个文件名在所有内容之前,文件内容以文件先后排列输出),在每行前面加上对应标记

get_close_matches(word, possibilities[, n][, cutoff]):从 possibilities 里挑选出最匹配 word 的元素,n 是返回最大个数,cutoff 是匹配阈值,低于它的不匹配,返回最优匹配结果,从大到小排列

restore(sequence, which):将从ndiff 或是Differ.compare() 生成的序列倒推回原序列,which值为1或2,代表第一/二个序列

Python2.7-difflib的更多相关文章

  1. python difflib详解

    difflib -帮助进行差异化比较 这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块. class dif ...

  2. 让VIM支持Python2 by update-alternatives

    前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...

  3. 烂泥:python2.7和python3.5源码安装

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...

  4. python版本随意切换之python2.7+django1.8.7+uwsgi+nginx源码包部署。

    资源准备: wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz wget https://www.djangoproject ...

  5. windows XP上实现python2.7.5和python3.4.3共存

    windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...

  6. Python2 基本数据结构源码解析

    Python2 基本数据结构源码解析 Contents 0x00. Preface 0x01. PyObject 0x01. PyIntObject 0x02. PyFloatObject 0x04. ...

  7. Ubuntu安装Python2.7,nodejs

    安装Python2.7 sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-get update sudo apt-get ...

  8. Windows下安装python2和python3双版本

    现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里我们只介绍下Windows(我用的Win10)环境下的pytho ...

  9. [python]CentOS 6下安装Python2.7

    安装方法 如果在CentOS上自己编译安装过python2.7,使用过程中会发现有些标准库没有安装之类的问题. 逛别人博客的时候发现,一个便捷的方法:使用RHSCL的全称是Red Hat Softwa ...

  10. 在CentOS 6.5上安装python2.7

    1.yum groupinstall “Development tools” 2.安装编译Python需要的组件 yum install zlib-devel bzip2-devel openssl- ...

随机推荐

  1. 【C#数据结构系列】栈和队列

    一:栈 栈和队列也是线性结构,线性表.栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制.栈的操作只能在表的一端进行,队列的插入操作 ...

  2. vue 实现点击图片放大

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.建立子组件,来实现图片方法功能: BigImg.vue <template> <!-- 过渡 ...

  3. js-ES6学习笔记-Generator函数的异步应用

    1.ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段. 2.所谓 ...

  4. 一张图看懂Mysql的join连接

    INNER JOIN:当两个表中都匹配时返回行. LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项也是如此. RIGHT JOIN:返回右表中的所有行,即使左表中没有匹配项也是如此. FU ...

  5. mysql数据库操作指令

    数据库相关 查询所有数据库 show databases; 创建数据库 create database 数据库名: 创建数据库指定字符集 create database 数据库名 character ...

  6. Java基础笔记(3) 进制与进制转换

    ---恢复内容开始--- 进制 在一般生活中,我们一直在应用的十进制,就是逢十进一,而今天我们要接触的是,计算机编程常用的进制!首先我们要知道,计算机内部运算采用的是二进制,也就是逢二进制! 1.什么 ...

  7. Maven学习(四)eclipse创建maven项目

    eclipse创建Maven web项目 1.创建新项目 选择File -> New ->Project 选择New Project窗口中选择 Maven -> Maven Proj ...

  8. 使用CDN做网站的内容加速

    1.什么是CDN: CDN的全称是Content Delivery Network,中文的意思就是内容分发网络,简单的讲通过现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的 ...

  9. 使用 Roslyn引擎动态编译代码

    Roslyn引擎自2014年开源至今这么久,一直没怎么了解过,虽然VS2015早就集成了它. 以前老一套的动态编译方法在 .NET Core中似乎不再支持了,很多方法都是未实现的.下面就介绍如何在.N ...

  10. 将 HPC 作业从本地计算机提交到部署在 Azure 中的 HPC Pack 群集

    Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource ...