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. Java - "JUC" ReentrantReadWriteLock

    Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock ReadWriteLock 和 ReentrantReadWriteLock介绍 ReadWriteLo ...

  2. 安装mysql出现no compatible servers were found

    一.问题描述 今天在安装数据库的过程中,遇到错误提示: No compatible servers were found,You'll need to cancel this wizard and i ...

  3. 互联网自治域间IP源地址验证技术综述

    一.文章信息 作者:贾溢豪,任罡,刘莹 单位:清华大学 来源:软件学报 时间:2017年 二.基于加密.签名及标记信息 2.1 技术原理 采用端到端验证的设计结构,其中以密钥协商最为常见.通信双方在事 ...

  4. HDU2859(KB12-Q DP)

    Phalanx Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. Linux 安装redis,redis发布订阅,持久化

    安装redis 1.安装redis的方式 -yum (删除这个yum安装的redis,我们只用源码编译安装的) -rpm -源码编译 2.删除原本的redis yum remove redis -y ...

  6. django-强大的ORM

    一.ORM简介 (对象关系映射:object relationship mapping) MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的 ...

  7. php+layui实现图片上传与预览

    端代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  8. Jquery 清除空白字符

    $.grep(“jQuery数组”, function(n) { return $.trim(n).length > 0; }); /*仅过滤空数组,不过滤相同数组*/

  9. 网站与phpwind用户同步的方法

    搭建了一个个人网站,希望使用phpwind来完成论坛功能.但很快就发现存在用户同步的问题,我的网站已经有了用户管理功能, phpwind论坛也有.因此用户同步注册,登陆和注销是必须要实现的. 网上说可 ...

  10. 【Python】pydot安装失败解决方法

    使用keras时输出网络结构需要用到pydot,总是安装失败,最后按照下面这样的步骤成功了. 1.安装graphviz:pip install graphviz 2.安装graphviz软件,地址在: ...