difflib主要用於比較兩個序列的不一樣,常見於字符串的比較,能夠對差別生成報告。SequenceMatcher 主要用於找二者類似部分,以及二者不一樣的轉換方法,而 Differ 更注重於比較二者的區別並標記,HtmlDiff 注重把二者的區別以 HTML 的形式表現出來html
模塊內定義了三個類:SequenceMatcher、Differ、HtmlDiffpython
一、Differ([linejunk[, charjunk]]):類初始化有兩個可選參數 linejunk 接受一個只有一個字符串參數的函數,表明忽略的字符串,charjunk 接受一個單一字符的函數,表明忽略的字符緩存
類內方法:函數
compare(a,b) :兩個序列必須是單獨的用 \n 分割的字符串,例如從 file.readlines() 得到。ui
二、HtmlDiff (tabsize=8, wrapcolumn=None, linejunk=None, charjunk=IS_CHARACTER_JUNK):類初始化有四個可選參數,tabsize=8,wrapcolumn=none,linejunk 和 charjunk 同上spa
類內方法:rest
make_file 和 make_table (fromlines, tolines [, fromdesc][, todesc][, context][, numlines]):對 fromlines 至 tolines 之間的文本進行比較,分別返回完整的 HTML 文件和表,from/todesc 表明文件頭部字符串,通常爲空,context 和 numlines 通常默認,紅的都不懂。。code
三、SequenceMatcher(isjunk=None, a='', b='', autojunk=True) :isjunk 能夠爲 none 或是接受一個單一序列的函數,該函數只會在元素符合垃圾時返回真。htm
類內方法:對象
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,表明第一/二個序列