欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python difflib模塊示例講解

 更新時(shí)間:2017年09月13日 09:06:18   作者:Lockeyi  
這篇文章主要為大家詳細(xì)介紹了python difflib模塊的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

difflib模塊提供的類(lèi)和方法用來(lái)進(jìn)行序列的差異化比較,它能夠比對(duì)文件并生成差異結(jié)果文本或者h(yuǎn)tml格式的差異化比較頁(yè)面,如果需要比較目錄的不同,可以使用filecmp模塊。

class difflib.SequenceMatcher

此類(lèi)提供了比較任意可哈希類(lèi)型序列對(duì)方法。此方法將尋找沒(méi)有包含‘垃圾'元素的最大連續(xù)匹配序列。

通過(guò)對(duì)算法的復(fù)雜度比較,它由于原始的完形匹配算法,在最壞情況下有n的平方次運(yùn)算,在最好情況下,具有線(xiàn)性的效率。

它具有自動(dòng)垃圾啟發(fā)式,可以將重復(fù)超過(guò)片段1%或者重復(fù)200次的字符作為垃圾來(lái)處理??梢酝ㄟ^(guò)將autojunk設(shè)置為false關(guān)閉該功能。

class difflib.Differ

此類(lèi)比較的是文本行的差異并且產(chǎn)生適合人類(lèi)閱讀的差異結(jié)果或者增量結(jié)果,結(jié)果中各部分的表示如下:

這里寫(xiě)圖片描述

class difflib.HtmlDiff

 此類(lèi)可以被用來(lái)創(chuàng)建HTML表格 (或者說(shuō)包含表格的html文件) ,兩邊對(duì)應(yīng)展示或者行對(duì)行的展示比對(duì)差異結(jié)果。

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

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

以上兩個(gè)方法都可以用來(lái)生成包含一個(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
+ emu

difflib.restore(sequence, which)

返回一個(gè)由兩個(gè)比對(duì)序列產(chǎn)生的結(jié)果

示例

>>> 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(字符串列表),返回一個(gè)unified diff格式的差異結(jié)果.

示例:

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

實(shí)際應(yīng)用示例

比對(duì)兩個(gè)文件,然后生成一個(gè)展示差異結(jié)果的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()

運(yùn)行結(jié)果:

這里寫(xiě)圖片描述

生成的html文件比對(duì)結(jié)果:

這里寫(xiě)圖片描述

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何一分鐘內(nèi)找出pandas DataFrame某列中的nan值

    如何一分鐘內(nèi)找出pandas DataFrame某列中的nan值

    這篇文章主要介紹了如何一分鐘內(nèi)找出pandas DataFrame某列中的nan值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python的多元數(shù)據(jù)類(lèi)型(下)

    python的多元數(shù)據(jù)類(lèi)型(下)

    這篇文章主要為大家詳細(xì)介紹了python的多元數(shù)據(jù)類(lèi)型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解Python中DOM方法的動(dòng)態(tài)性

    詳解Python中DOM方法的動(dòng)態(tài)性

    這篇文章主要介紹了詳解Python中DOM方法的動(dòng)態(tài)性,xml.dom模塊在Python的網(wǎng)絡(luò)編程中相當(dāng)有用,本文來(lái)自于IBM官網(wǎng)的開(kāi)發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • python之pkl文件的用法及說(shuō)明

    python之pkl文件的用法及說(shuō)明

    這篇文章主要介紹了python之pkl文件的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • tensorflow實(shí)現(xiàn)邏輯回歸模型

    tensorflow實(shí)現(xiàn)邏輯回歸模型

    這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)邏輯回歸模型的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法

    Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法

    這篇文章主要給大家介紹了關(guān)于Python將運(yùn)行結(jié)果導(dǎo)出為CSV格式的兩種常用方法,Python生成(導(dǎo)出)csv文件其實(shí)很簡(jiǎn)單,我們一般可以用csv模塊或者pandas庫(kù)來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2023-07-07
  • python與matlab一些常用函數(shù)互轉(zhuǎn)問(wèn)題

    python與matlab一些常用函數(shù)互轉(zhuǎn)問(wèn)題

    這篇文章主要介紹了python與matlab一些常用函數(shù)互轉(zhuǎn),包括十六進(jìn)制字節(jié)流數(shù)據(jù)的相關(guān)知識(shí),本文通過(guò)示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • python網(wǎng)絡(luò)編程之讀取網(wǎng)站根目錄實(shí)例

    python網(wǎng)絡(luò)編程之讀取網(wǎng)站根目錄實(shí)例

    這篇文章主要介紹了python網(wǎng)絡(luò)編程之讀取網(wǎng)站根目錄實(shí)例,以quux.org站根目錄為例進(jìn)行了實(shí)例分析,代碼簡(jiǎn)單易懂,需要的朋友可以參考下
    2014-09-09
  • Python?for循環(huán)詳細(xì)講解(附代碼實(shí)例)

    Python?for循環(huán)詳細(xì)講解(附代碼實(shí)例)

    這篇文章主要給大家介紹了關(guān)于Python?for循環(huán)詳細(xì)講解的相關(guān)資料,在Python中,for循環(huán)是一種常用的控制結(jié)構(gòu),用于遍歷序列(如列表、元組、字符串等)中的元素,需要的朋友可以參考下
    2024-03-03
  • 詳解如何使用Python實(shí)現(xiàn)刪除重復(fù)文件

    詳解如何使用Python實(shí)現(xiàn)刪除重復(fù)文件

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)刪除重復(fù)文件功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-10-10

最新評(píng)論