亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

pythondifflib詳解

2019-11-14 17:44:12
字體:
來源:轉載
供稿:網友

difflib -幫助進行差異化比較

這個模塊提供的類和方法用來進行差異化比較,它能夠生成文本或者html格式的差異化比較結果,如果需要比較目錄的不同,可以使用filecmp模塊。

class difflib.SequenceMatcher

這是可以用來比較任何類型片段的類,只要比較的片段是可hash的,都可以用來比較,使用非常靈活。他源于1980,s的“完形匹配算法”,并且進行了一系列的優化和改進。

通過對算法的復雜度比較,它由于原始的完形匹配算法,在最壞情況下有n的平方次運算,在最好情況下,具有線性的效率。

它具有自動垃圾啟發式,可以將重復超過片段1%或者重復200次的字符作為垃圾來處理??梢酝ㄟ^將autojunk設置為false關閉該功能。

autojunk 參數新增于2.7.1版本。

class difflib.Differ

這個類用來比較文本里的行,并且產生可閱讀的差異化結果。

它用以下符號來表示不同

Code

Meaning

'- '

僅在片段1中存在

'+ '

僅在片段2中存在

' '

片段1和2中都存在

'? '

存在疑問的

標識為?需要你通過人工的方式仔細比較他們的不同,他們產生的原因是源于混亂的制表符

class difflib.HtmlDiff

這個類用來創建一個html表格(或者包含html表格的文件)用來展示文件差異。他既可以進行全文本展示,也可以只展示上下文不同。

這個類的構造函數如下:

__init__(tabsize=8, wrapcolumn=None, linejunk=None, charjunk=IS_CHARACTER_JUNK)

tabsize表示制表符代表的空格個數,默認為8

wrapcolumn,可選參數,用來設置多少個字符時自動換行,默認None,None時表示不自動換行

linejunkcharjunk,可選參數,在ndiff()中使用,

這個類的公共方法:

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

用來生成一個包含表格的html文件,其內容是用來展示差異。

fromlinestolines,用于比較的內容,格式為字符串組成的列表

fromdesctodesc,可選參數,對應的fromlines,tolines的差異化文件的標題,默認為空字符串

contextnumlines,可選參數,context True時,只顯示差異的上下文,為false,顯示全文,numlines默認為5,當contextTrue時,控制展示上下文的行數,當contextfalse,控制不同差異的高亮之間移動時“next”的開始位置(如果設置為0,當移動懂頂端時,超鏈接會丟失引用地址)

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

這個方法和make_file用法一樣,唯一的區別在于它只生成了一個html表格字符串

python安裝包的Tools/scripts/diff.py是關于他們使用的一個很好的例子,它可以用命令行來運行。

新增于python2.4

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

用來比較a,b,a,b都是字符串列表。返回一個格式化文本的差異。

他是一個用來展示少量差異的好方法,這種變化,用前/后的樣式進行展示,n默認為3,用來控制展示發現的差異數

默認情況下,差異控制行(*** or ---)用來把a,b的差異區隔開來,便于程序讀寫處理,如果不需要這樣做的話,可以設置lineterm為"",這樣,就會卸載一行里

如果格式化差異文本需要標題和修改時間信息,通過fromfile, tofile, fromfiledate, 和 tofiledate進行控制,如果不設置,默認為空

>>> 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])
 返回一個最相似匹配的列表word,用來進行匹配的片段(典型的應用是字符串)
possibilities,用來匹配word的片段
n,默認為3,返回的最多結果數,必須大于0
cutoff,默認為0.6,匹配的相似因數,他是一個介于0,1的浮點數
>>> 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,返回差異

linejunk和charjunk都是用來匹配的方法

linejunk:接收一個字符串的方法,如果這個字符串被認定為垃圾,則返回true,否則為false,默認為None,他調用了IS_LINE_JUNK()這個方法,這個方法存在bug,他不能過濾掉’#’周圍的不可見字符,2.3以后,對這個方法進行了動態分析,表現會比以前好些

charjunk:接受一個字符的方法,如果這個字符被認定為垃圾,則返回true,否則為false,它調用了IS_CHARACTER_JUNK(), 他會自動過濾掉空白字符(所以,不要用空白字符或者制表符作為分隔符)

Tools/scripts/ndiff.py 是執行這一方法的實例:

>>> diff = ndiff('one/ntwo/nthree/n'.splitlines(1),...              'ore/ntree/nemu/n'.splitlines(1))>>> 

difflib.
restore(sequence, which)

返回1或2的差異對Differ.compare() 或者 ndiff()的結果進行處理,根據參數which,返回片段1或者片段2的差異化結果實例:

>>> 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)),onetwothree>>> print ''.join(restore(diff, 2)),oretreeemu

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

用來比較a,b,a,b都是字符串列表。返回一個統一的格式化文本的差異。

使用方式和difflib.context_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

 

 

difflib.IS_LINE_JUNK(line)如果是需要忽略的行,則返回為true,如果這個行內全為空格或者只有’#’,則將這行忽略掉

difflib.IS_CHARACTER_JUNK(ch)如果是需要忽略的字符,則返回為true,如果這個字符為空格,則將這行忽略掉


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区四区在线观看视频| 国产在线一区二区三区| 亚洲最大成人在线| 久久五月情影视| 久久精品国产v日韩v亚洲| 91精品久久久久久久久久入口| 成人h视频在线| 国产欧美一区二区三区久久| 亚洲成年人影院在线| 久久精品电影网站| 精品久久久久久久久久国产| 成人妇女免费播放久久久| 91免费观看网站| 大桥未久av一区二区三区| 国产成人精品av在线| 亚洲美女av黄| 97久久精品人人澡人人爽缅北| 81精品国产乱码久久久久久| 亚洲在线www| 久久精品亚洲国产| 一本大道亚洲视频| 国产精品av网站| 久久久久久网站| www.日韩视频| 成人免费视频xnxx.com| 成人做爰www免费看视频网站| 全亚洲最色的网站在线观看| 亚洲激情中文字幕| 欧美超级免费视 在线| 国产成人精品一区| 麻豆精品精华液| 人九九综合九九宗合| 久久99久久久久久久噜噜| 高清一区二区三区四区五区| 久久九九有精品国产23| 午夜精品久久久99热福利| 亚洲人精品午夜在线观看| 欧美激情视频免费观看| 日韩av中文字幕在线| 成人综合国产精品| 亚洲中国色老太| 亚洲韩国欧洲国产日产av| 日韩最新免费不卡| 欧美另类在线观看| 日韩精品视频在线观看网址| 欧美成人精品在线视频| 成人激情视频在线播放| 亚洲成人激情在线观看| 久久天天躁夜夜躁狠狠躁2022| 欧美激情精品久久久| 热门国产精品亚洲第一区在线| 日韩免费精品视频| 日本欧美黄网站| 国产91成人video| 久热精品视频在线免费观看| 日韩免费在线电影| 欧美性xxxx18| 精品亚洲永久免费精品| 欧美日韩国产色视频| 91精品国产高清自在线看超| 欧美精品video| 国产精品欧美一区二区三区奶水| 一区二区日韩精品| 欧美俄罗斯乱妇| 欧美激情视频一区二区三区不卡| 国产综合色香蕉精品| 国模精品一区二区三区色天香| 91九色国产社区在线观看| 欧美一区视频在线| 成人xvideos免费视频| 狠狠色噜噜狠狠狠狠97| 日韩在线观看精品| 这里只有视频精品| 成人信息集中地欧美| 日本久久精品视频| 亚洲精品v天堂中文字幕| 日韩中文字幕免费看| 欧美精品久久久久久久免费观看| 日韩久久午夜影院| 激情成人在线视频| 国产99久久精品一区二区| 日韩成人在线视频| 国产亚洲精品激情久久| 日韩一区二区三区xxxx| 色综合视频网站| 日本欧美一级片| 精品伊人久久97| 欧美精品精品精品精品免费| 2020欧美日韩在线视频| 最新国产精品拍自在线播放| 久久香蕉国产线看观看av| 欧美精品在线观看91| 日韩免费黄色av| 精品久久久av| 不卡在线观看电视剧完整版| 日韩亚洲第一页| 欧美国产日韩在线| 91禁国产网站| 亚洲精品成a人在线观看| 国产在线精品一区免费香蕉| 麻豆国产精品va在线观看不卡| 91久久夜色精品国产网站| 91精品视频免费| 蜜臀久久99精品久久久无需会员| 91精品国产色综合久久不卡98口| 亚洲桃花岛网站| 另类少妇人与禽zozz0性伦| 亚洲精品日韩激情在线电影| 亚洲午夜精品久久久久久性色| 91麻豆国产语对白在线观看| 视频在线一区二区| 国产成人精品国内自产拍免费看| 中文字幕在线精品| 亚洲福利视频专区| 97视频免费看| 91九色在线视频| 国产精品久久一| 国产精品黄色av| 成人午夜一级二级三级| www日韩欧美| 6080yy精品一区二区三区| 91久久久国产精品| 91sao在线观看国产| 91久久国产精品| 欧美刺激性大交免费视频| 国产成人一区二| 国产成人精品久久久| 在线观看国产精品淫| 久热国产精品视频| 久久久久中文字幕| 一区二区三区国产在线观看| 欧美激情国内偷拍| 国产在线视频91| 欧美一区二三区| 欧美精品久久久久久久免费观看| 国产精品偷伦一区二区| 精品福利在线观看| 8x海外华人永久免费日韩内陆视频| 久久成人在线视频| 亚洲美女性生活视频| 在线看片第一页欧美| 久久久精品久久久| 欧美精品videos另类日本| 最近中文字幕日韩精品| 96pao国产成视频永久免费| 欧美激情亚洲激情| 亚洲国产女人aaa毛片在线| 91免费高清视频| 午夜精品久久久久久99热软件| 国产网站欧美日韩免费精品在线观看| 日本乱人伦a精品| 日韩理论片久久| 久久在线观看视频| 日本精品一区二区三区在线| 97免费中文视频在线观看| 成人a在线观看| 亚洲第一视频网| 欧美国产日韩一区| 成人黄色短视频在线观看| xxx欧美精品| 亚洲伦理中文字幕| 欧美激情日韩图片| 97国产在线观看| 亚洲精品之草原avav久久|