difflib模塊提供的類和方法用來進(jìn)行序列的差異化比較,它能夠比對(duì)文件并生成差異結(jié)果文本或者h(yuǎn)tml格式的差異化比較頁面,如果需要比較目錄的不同,可以使用filecmp模塊。
class difflib.SequenceMatcher
此類提供了比較任意可哈希類型序列對(duì)方法。此方法將尋找沒有包含‘垃圾'元素的最大連續(xù)匹配序列。
通過對(duì)算法的復(fù)雜度比較,它由于原始的完形匹配算法,在最壞情況下有n的平方次運(yùn)算,在最好情況下,具有線性的效率。
它具有自動(dòng)垃圾啟發(fā)式,可以將重復(fù)超過片段1%或者重復(fù)200次的字符作為垃圾來處理。可以通過將autojunk設(shè)置為false關(guān)閉該功能。
class difflib.Differ
此類比較的是文本行的差異并且產(chǎn)生適合人類閱讀的差異結(jié)果或者增量結(jié)果,結(jié)果中各部分的表示如下:

class difflib.HtmlDiff
此類可以被用來創(chuàng)建HTML表格 (或者說包含表格的html文件) ,兩邊對(duì)應(yīng)展示或者行對(duì)行的展示比對(duì)差異結(jié)果。
make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])
以上兩個(gè)方法都可以用來生成包含一個(gè)內(nèi)容為比對(duì)結(jié)果的表格的html文件,并且部分內(nèi)容會(huì)高亮顯示。
difflib.context_diff(a, b[, fromfile][, tofile][, fromfiledate][, tofiledate][, n][, lineterm])
比較a與b(字符串列表),并且返回一個(gè)差異文本行的生成器
示例:
>>> 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])
返回最大匹配結(jié)果的列表
示例:
>>> 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(字符串列表),返回一個(gè)Differ-style 的差異結(jié)果
示例:
>>> diff = ndiff('one/ntwo/nthree/n'.splitlines(1),... 'ore/ntree/nemu/n'.splitlines(1))>>> print ''.join(diff),- one? ^+ ore? ^- two- three? -+ tree+ emudifflib.restore(sequence, which)
新聞熱點(diǎn)
疑難解答
圖片精選