Python2.7-difflib
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的更多相关文章
- python difflib详解
difflib -帮助进行差异化比较 这个模块提供的类和方法用来进行差异化比较,它能够生成文本或者html格式的差异化比较结果,如果需要比较目录的不同,可以使用filecmp模块. class dif ...
- 让VIM支持Python2 by update-alternatives
前言 Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...
- 烂泥:python2.7和python3.5源码安装
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...
- 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 ...
- windows XP上实现python2.7.5和python3.4.3共存
windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...
- Python2 基本数据结构源码解析
Python2 基本数据结构源码解析 Contents 0x00. Preface 0x01. PyObject 0x01. PyIntObject 0x02. PyFloatObject 0x04. ...
- Ubuntu安装Python2.7,nodejs
安装Python2.7 sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-get update sudo apt-get ...
- Windows下安装python2和python3双版本
现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里我们只介绍下Windows(我用的Win10)环境下的pytho ...
- [python]CentOS 6下安装Python2.7
安装方法 如果在CentOS上自己编译安装过python2.7,使用过程中会发现有些标准库没有安装之类的问题. 逛别人博客的时候发现,一个便捷的方法:使用RHSCL的全称是Red Hat Softwa ...
- 在CentOS 6.5上安装python2.7
1.yum groupinstall “Development tools” 2.安装编译Python需要的组件 yum install zlib-devel bzip2-devel openssl- ...
随机推荐
- TF-IDF原理
什么是TF-IDF TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率). 是一种用于资讯检索与资讯探勘的常用加权技术.TF-IDF ...
- Thinkphp+ECharts生成柱状图
1.首先进ECharts官网下载echarts.js 点击下载,结合TP5讲解,主要代码在js里面,更多请到ECharts官网 2.引进echarts.js <!DOCTYPE html> ...
- BZOJ4358: permu(带撤销并查集 不删除莫队)
题意 题目链接 Sol 感觉自己已经老的爬不动了.. 想了一会儿,大概用个不删除莫队+带撤销并查集就能搞了吧,\(n \sqrt{n} logn\)应该卡的过去 不过不删除莫队咋写来着?....跑去学 ...
- linux下将本地文件上传到github中?
今天编写一份Python基础代码,经过Linux上传到github上,遇到点问题,已经解决 1.首先sudo su 进入root 用户 2.ls 检查出当前文件下有什么文件 3. cd 进入你将要上传 ...
- CentOS7安装tomcat9
1.去官网下载tomcat9的tar.gz安装包 2.移到centos7中并解压 解压命令: tar -xzvf tomcat9.tar.gz 3.打开文件 /etc 目录下的 profile 文件: ...
- JS中的兼容问题总结
今天总结总结在JS里面遇到的兼容性问题 1.获取滚动距离的兼容性问题: document.documentElement.scrollTop || document.body.scrollTop ...
- 【读书笔记】iOS-自定义视图的创建
静态创建自定义视图就是以拖动的方法来创建. 动态创建自定义视图可以理解为使用代码来创建自定义视图. 参考资料:<iOS7开发快速入门>
- Nginx控制并发连接数
ngx_http_limit_conn_module这个模块用于限制每个定义的key值的连接数,特别是单IP的连接数. 不是所有的连接数都会被计数.一个符合计数要求的连接是整个请求头已经被读取的连接. ...
- [Sublime-Text] Linux下用Sublime-Text3编译输出Java文件
因为现在在借着经典的书籍巩固一些基础知识,所以会经常跑一些简单的程序,可又不想开庞大的IDE.所以就想试着用Sublime-Text来编译程序,哦,当然如果习惯的话,用 terminal 也可以.其实 ...
- Python Django框架笔记(三):django工作方式简单说明和创建用户界面
(一) 说明 简单说明下django的工作方式,并举2个例子. (二) Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和s ...