全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

python difflib模块示例讲解

difflib模块提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面,如果需要比较目录的不同,可以使用filecmp模块。

class difflib.SequenceMatcher

此类提供了比较任意可哈希类型序列对方法。此方法将寻找没有包含‘垃圾'元素的最大连续匹配序列。

通过对算法的复杂度比较,它由于原始的完形匹配算法,在最坏情况下有n的平方次运算,在最好情况下,具有线性的效率。

它具有自动垃圾启发式,可以将重复超过片段1%或者重复200次的字符作为垃圾来处理。可以通过将autojunk设置为false关闭该功能。

class difflib.Differ

此类比较的是文本行的差异并且产生适合人类阅读的差异结果或者增量结果,结果中各部分的表示如下:

class difflib.HtmlDiff

 此类可以被用来创建HTML表格 (或者说包含表格的html文件) ,两边对应展示或者行对行的展示比对差异结果。

 make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])

make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])

以上两个方法都可以用来生成包含一个内容为比对结果的表格的html文件,并且部分内容会高亮显示。

difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])

比较a与b(字符串列表),并且返回一个差异文本行的生成器
示例:

>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'):
...   sys.stdout.write(line) 
*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
 guido
--- 1,4 ----
! python
! eggy
! hamster
 guido

difflib.get_close_matches(word, possibilities[, n][, cutoff])

返回最大匹配结果的列表

示例:

>>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
['apple', 'ape']
>>> import keyword
>>> get_close_matches('wheel', keyword.kwlist)
['while']
>>> get_close_matches('apple', keyword.kwlist)
[]
>>> get_close_matches('accept', keyword.kwlist)
['except']

difflib.ndiff(a, b[, linejunk][, charjunk])

比较a与b(字符串列表),返回一个Differ-style 的差异结果
示例:

>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1),
...       'ore\ntree\nemu\n'.splitlines(1))
>>> print ''.join(diff),
- one
? ^
+ ore
? ^
- two
- three
? -
+ tree
+ emu

difflib.restore(sequence, which)

返回一个由两个比对序列产生的结果

示例

>>> diff = ndiff('one\ntwo\nthree\n'.splitlines(1),
...       'ore\ntree\nemu\n'.splitlines(1))
>>> diff = list(diff) # materialize the generated delta into a list
>>> print ''.join(restore(diff, 1)),
one
two
three
>>> print ''.join(restore(diff, 2)),
ore
tree
emu

difflib.unified_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])

比较a与b(字符串列表),返回一个unified diff格式的差异结果.

示例:

>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in unified_diff(s1, s2, fromfile='before.py', tofile='after.py'):
...  sys.stdout.write(line) 
--- before.py
+++ after.py
@@ -1,4 +1,4 @@
-bacon
-eggs
-ham
+python
+eggy
+hamster
 guido

实际应用示例

比对两个文件,然后生成一个展示差异结果的HTML文件

#coding:utf-8
'''
file:difflibeg.py
date:2017/9/9 10:33
author:lockey
email:lockey@123.com
desc:diffle module learning and practising 
'''
import difflib
hd = difflib.HtmlDiff()
loads = ''
with open('G:/python/note/day09/0907code/hostinfo/cpu.py','r') as load:
 loads = load.readlines()
 load.close()

mems = ''
with open('G:/python/note/day09/0907code/hostinfo/mem.py', 'r') as mem:
 mems = mem.readlines()
 mem.close()

with open('htmlout.html','a+') as fo:
 fo.write(hd.make_file(loads,mems))
 fo.close()

运行结果:

生成的html文件比对结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# python  # difflib  # 模块  # python使用difflib实现自动查重  # 用python标准库difflib比较两份文件的异同详解  # Python 比较文本相似性的方法(difflib  # Levenshtein)  # 利用Python Difflib库强大的文字比较功能快速轻松查重  # 比对  # 此类  # 差异化  # 的是  # 情况下  # 可以通过  # 可以使用  # 或者说  # 设置为  # 大家多多  # 可以用来  # 实际应用  # 最坏  # 各部分  # 完形  # tofiledate  # word  # lineterm  # brush  # py 


相关文章: 5种Android数据存储方式汇总  简单实现Android验证码  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  制作网站外包平台,自动化接单网站有哪些?  建站之星如何实现PC+手机+微信网站五合一建站?  如何快速建站并高效导出源代码?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  ,南京靠谱的征婚网站?  如何正确下载安装西数主机建站助手?  建站主机选择指南:服务器配置与SEO优化实战技巧  如何在Golang中引入测试模块_Golang测试包导入与使用实践  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何通过VPS建站实现广告与增值服务盈利?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  微信推文制作网站有哪些,怎么做微信推文,急?  如何快速搭建自助建站会员专属系统?  如何零基础开发自助建站系统?完整教程解析  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何用PHP工具快速搭建高效网站?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何用腾讯建站主机快速创建免费网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  h5在线制作网站电脑版下载,h5网页制作软件?  网站制作需要会哪些技术,建立一个网站要花费多少?  网站制作员失业,怎样查看自己网站的注册者?  网站制作新手教程,新手建设一个网站需要注意些什么?  c# 在高并发场景下,委托和接口调用的性能对比  如何高效完成独享虚拟主机建站?  网站制作话术技巧,网站推广做的好怎么话术?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  网站制作软件免费下载安装,有哪些免费下载的软件网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站主机数据库如何配置才能提升网站性能?  网站制作模板下载什么软件,ppt模板免费下载网站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  如何快速生成橙子建站落地页链接?  如何在局域网内绑定自建网站域名?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  建站之星Pro快速搭建教程:模板选择与功能配置指南  临沂网站制作企业,临沂第三中学官方网站?  如何在云主机上快速搭建网站?  如何彻底卸载建站之星软件?  长沙做网站要多少钱,长沙国安网络怎么样?  北京企业网站设计制作公司,北京铁路集团官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。