Python 快速对比字符串的差异


  在日常中,经常会对一些字符,列表等进行比较,找出差异。例如可以在 excel 运用 mid 和 exact 结合对每个字符进行比较,如果遇上比较长的字符串时,显然单纯通过公式去比较,工作量是非常大,即使通过VBA加入循环,减少重复的公式量,得出的结果也比较零散,难以快速判断。
str_1 : payload%3D%5B%7B%22code%22%3A%22city%22%2C%22name%22%3A%22%E4%B8%9C%E8%8E%9E%22%2C%22value%22%3A%222665%22%2C%22jsver%3Daplus_std%26lver%3D8.15.6%26pver%3D0.7.11%26cache%3Dd65781a%26page_cna%3DfE0tGdHBzCoCAXFtdrUNRwMz%26_slog%3D0
str_2: payload%3D%5B%7B%22code%22%3A%22city%22%2C%22name%22%3A%22%E4%B8%AD%E5%B1%B1%22%2C%22value%22%3A%222667%22%2C%22jsver%3Daplus_std%26lver%3D8.15.6%26pver%3D0.7.11%26cache%3Dbf6e196%26page_cna%3DfE0tGdHBzCoCAXFtdrUNRwMz%26_slog%3D0
  对比分析上面两个请求的 URL后缀 为例,可见两个的请求的部分都非常相似。首先对整个字符串进行对比, 如下图1
   对比结果发现 这两个字符串确实是存在差异,那究竟是在哪部分呢? 可以通过导入 difflib库,利用它的 compare() 方法可以快速找出具体的差异。
  首先经过观察可以发现,在请求URL 的后缀部分,都包括payload, name,value 等关键字,可以先把它分割成单独的行,打印 diff意见它的类型,可知是一个 generator object , 如下图2
   尝试把 diff转换成列表再打印,发现输出的结果比较混乱,好难看到对比的结果, 如下图3
   把列表转换成分行的字符串,'\n'.join(list(diff)),最后就可以输出非常清晰的对比结果, 如下图4
   具体符合的定义, 如下图5,difflib库 还有其它的应用方法,具体可以参考其官方文档。

图1

在这里插入图片描述


图2
在这里插入图片描述


图3
在这里插入图片描述

图4

在这里插入图片描述


图5
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值