本示例通過使用difflib模塊實現兩個字符串的差異對比,然后以版本控制風格進行輸出。
#!/usr/bin/env python import difflib text1 = """text1: #定義字符串1 This module provides classes and functions for comparing sequences. including HTML and context and unified diffs. difflib document v7.4 add string""" text1_lines = text1.splitlines() #以行進行分割,以便進行對比 text2 = """text2: #定義字符串2 This module provides classes and functions for comparing sequences. including HTML and context and unified diffs. difflib document v7.5 add string""" text2_lines = text2.splitlines() d = difflib.Differ() #創建Differ()對象 diff = d.compare(text1_lines,text2_lines) #采用compare方法對字符串進行比較 print('\n'.join(list(diff)))
被示例采用Differ()類對兩個字符串進行比較,另外difflib的SuquenceMatcher()類支持任意類型序列的比較,HtmlDiff()類支持將比較結果輸出為HTML格式,示例運行結果如下:
[root@localhost diff_lib]# python3 simple1.py - text1: #定義字符串1 + text2: #定義字符串2 This module provides classes and functions for comparing sequences. including HTML and context and unified diffs. - difflib document v7.4 ? ^ + difflib document v7.5 ? ^ add string
符號含義說明:
符號 | 含義 |
'_' | 包含在第一行序列行中,但不包含在第二行序列行 |
'+' | 包含在第二行序列行中,但不包含在第一行序列行 |
'' | 兩個序列行一致 |
'?' | 標志兩個序列行存在增量差異 |
'^' | 標志出兩個序列行存在的差異字符 |