python difflib模块详解


本文摘自php中文网,作者巴扎黑,侵删。

这篇文章主要为大家详细介绍了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(字符串列表),并且返回一个差异文本行的生成器
示例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

>>> 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])

返回最大匹配结果的列表

示例:


1

2

3

4

5

6

7

8

9

>>> 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 的差异结果
示例:


1

2

3

4

5

6

7

8

9

10

11

12

>>> 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)

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

阅读剩余部分

相关阅读 >>

如何使用Python读取excel文件?(代码示例)

Python中is 和 ==的详细解析(附代码)

linux下修改Python命令的方法示例(附代码)

Python中的特殊变量__name__有什么用?

Python如何生成exe文件

Python处理菜单消息操作示例

Python中index的用法是什么

Python实现的求解最小公倍数算法示例

Python怎么打开网页

Python注释用什么符号

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...