fastreport 打印两个list_如何利用python来对比两个字符串的差异

今天来介绍如何通过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))) #打印输出结果

输出结果如下图:

90411f62b711fcd53d90d08e61d29943.png

可以看到上面有很多符号:"+"、"-"、"?",下面来详细说一下每个符号代表的含义

"+"表示包含在第二个序列行中,但不包含在第一个序列行

"-"表示包含在第一个序列行中,但不包含在第二个序列行

" "表示两行一致

"?"表示两个序列行存在增量差异

"^"表示两个序列行中存在差异的字符

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软件,结果如下图

676148eda5df2cb691e02d3dd14bc948.png

这样的结果是不是比第一个结果更加的直观,看起来更方便 ?

到这里,对比字符串的差异模块就介绍完毕了,下一期介绍如何读取文件后,对比两个文件之间的差异。感谢您的观看。如果有问题,请私信或留言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值