今天来介绍如何通过difflib模块实现字符串差异对比。Difflib的作用是对比文本之间的差异,且支持输入可读性比较强的HTML文档。下面来看一下示例。 1、 两个字符串的差异对比,代码如下: import difflib text1 = ''' text1: Differ is a class for comparing sequences of lines of text,and producing human-readble differences or deltas. add string print version ''' #定义字串text1 text1_lines = text1.splitlines() # 以行分隔,以便进行对比 text2 = '''text2: differ is a class for comparing sequences of lines of text,and producing human-readable differences or deltas. add string print version ''' #定义字符串2 text2_lines = text2.splitlines() # 以行分隔,以便进行对比 d = difflib.Differ() #创建differ()对象 diff = d.compare(text1_lines,text2_lines) #采用compare 方法对字符串进行比较 print (''.join(list(diff))) #打印输出结果 输出结果如下图: 可以看到上面有很多符号:'+'、'-'、'?',下面来详细说一下每个符号代表的含义 '+'表示包含在第二个序列行中,但不包含在第一个序列行 '-'表示包含在第一个序列行中,但不包含在第二个序列行 ' '表示两行一致 '?'表示两个序列行存在增量差异 '^'表示两个序列行中存在差异的字符 2、 生成HTML文档格式的对比结果 我们从上面的对比结果可以看出,用各种符号来表示文档的差异,即不美观,也不方便,那我们来看看如何征收成HTML格式的对比结果,采用的是htmldiff()类的make_file方法就可以生成了。对上面的代码作如下修改: d = difflib.Differ() #创建differ()对象 diff = d.compare(text1_lines,text2_lines) #采用compare 方法对字符串进行比较 print (''.join(list(diff))) #打印输出结果 替换为: D = difflib.HtmlDiff() Print (d.make_file(text1_lines,text2_lines) 完整代码如下: import difflib text1 = ''' text1: Differ is a class for comparing sequences of lines of text,and producing human-readble differences or deltas. add string print version ''' #定义字串text1 text1_lines = text1.splitlines() # 以行分隔,以便进行对比 text2 = '''text2: differ is a class for comparing sequences of lines of text,and producing human-readable differences or deltas. add string print version ''' #定义字符串2 text2_lines = text2.splitlines() # 以行分隔,以便进行对比 #d = difflib.Differ() #创建differ()对象 #diff = d.compare(text1_lines,text2_lines) #采用compare 方法对字符串进行比较 #print (''.join(list(diff))) #打印输出结果 d = difflib.HtmlDiff() print (d.make_file(text1_lines,text2_lines)) 另存为com.py,然后在命令行下运行python com.py > com.html 然后用浏览器打开生成的html软件,结果如下图 这样的结果是不是比第一个结果更加的直观,看起来更方便 ? 著作权归作者所有
|
|