点上方“菜鸟编程大本营”,选择“星标”
原创干货,第一时间送达

对于“大家来找茬”这个游戏而言,小伙伴们肯定不会陌生,找茬游戏对于大家的耐心和细心是一个非常大的考验。对于python程序来说,也会遇到类似于找茬游戏的问题。例如寻找两个列表中不同的元素内容。

好在python3中存在一个内置库,来帮助我们解决该类问题,今天,小编就为大家介绍这个小巧但是却十分好用的python3内置库——difflib

01.difflib 库介绍

difflib 库是python3的一个内置库,因此大家不需要通过pip来进行安装,直接就可以在程序中调用difflib 库,并进行使用。

02.difflib 的使用

那么difflib库有哪些方面的应用呢?我们通过以下的四个实际应用中常见的问题进行展开。

  • 寻找两个列表中不同的元素

  • 准确指示元素间的差异

  • 进行准确度的匹配

  • 字符串转换

1).寻找两个列表中不同的元素

在实际的应用中,经常会遇到找到两个列表中不同的元素,如果列表元素少的话,我们可以通过人工的方式进行筛查,但是如果元素较多,我们可以通过下图的程序进行筛查。

上图程序中,通过两个for循环来筛查两个列表中的元素,互相筛查出来两个列表中的不同元素内容。difflib 可以利用一行程序来实现上述的功能,并且在结果的输出中更加美观。

程序通过调用difflib 库的context_diff函数,一行代码便可以给两个列表进行“找茬”处理。在结果的展示中,可以看到,context_diff函数输出的结果更加的清晰明确,***1,5***中,1和5表示的是传入第一个列表中的元素而在第二个列表中不存在。

同时在元素前面利用叹号进行标定。无论从程序的编写还是结果的展示方面,difflib 库都给出了很好的解答。

2).准确指示元素间的差异

前面的操作还只是简单的筛查出来,不同列表之间元素的区别,difflib 还能够更进一步,直接找到不同元素之间的差异性,如下图所示:

上图中,通过ndiff函数来寻找两个列表中,不同英文单词的细节差异,输出结果中,-号表示的是在第一个列表中存在,但是在第二个列表中没有的元素,+号表示在第一个列表中不存在,但是在第二个列表中存在的元素。

对比peak和peek,可以发现,第三个元素是不相同的,因此在结果中通过^号来指出存在差异的字母位置。

3).进行准确度的匹配

让我们更进一步的来对difflib 库进行探索,利用准确度匹配的方式来寻找最接近的单词。在日常的程序编写过程中,大家可能会将main不小心的写为mian。利用difflib 库中的get_close_matches函数,可以纠正这样的错误输入,如下图所示:

上述程序中,通过get_close_matches函数,可以匹配得到与mian最为接近的单词是main。get_close_matches函数中给出的cutoff参数,控制着匹配的严格程度,它的值介于0到1之间,cutoff的值越大,表示匹配程度越严格,如果设置为1时,则必须单词完全一致才能匹配,否则就会返回空列表。利用get_close_matches函数,可以完成单词之间相似度的匹配。

4).字符串转换

无论在实际的应用,抑或是笔试算法的考察中,都会遇到一类问题,就是字符串的转换问题,例如,如何将字符串“welcome to python program"转换成”welcome to follow python subscription“。利用difflib库中的SequenceMatcher类,就可以完成字符串的转换。

上图的程序中,通过调用SequenceMatcher类来完成将字符串str1转换成str2的过程,其中action对应的是对于str1的操作动作,equal表示两个字符串相同,不用改变,insert表示在str1中进行插入,replace表示字符串的替换,位置表示需要改变的字符串的位置。按照输出结果的指示进行操作,就可以将str1转换为str2。

03.总结

以上内容就是小编今天为大家带来的关于difflib 库的内容分享,在日常的学习中,difflib库可以帮助我们快速的进行列表内容的查重,单词的更改和替换。

提升开发效率,大家可以按照上面的内容,更加深入的学习difflib库的内容。

欢迎大家在留言区吱一声,觉得今天的分享内容有用的话,记得给个三连哦!

推荐阅读:入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影年度爆款文案1).卧槽!Pdf转Word用Python轻松搞定!2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 4).80行代码!用Python做一个哆来A梦分身 5).你必须掌握的20个python代码,短小精悍,用处无穷 6).30个Python奇淫技巧集 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 8).再见Python!我要学Go了!2500字深度分析!9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片点阅读原文,领廖雪峰大佬的资料包!

牛逼,Python3竟然内置找茬神器!一起来找茬吧!相关推荐

  1. 牛逼,Python3竟然内置找茬神器!一起来找茬吧

    对于"大家来找茬"这个游戏而言,小伙伴们肯定不会陌生,找茬游戏对于大家的耐心和细心是一个非常大的考验.对于python程序来说,也会遇到类似于找茬游戏的问题.例如寻找两个列表中不同 ...

  2. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结

    Python中的列表是简直可说是有容乃大,虽然看似类似C中的数组,但是Python列表可以接受任意的对象元素,比如,字符串,数字,布尔值,甚至列表,字典等等,自由度提升到一个新的高度,而Python也 ...

  3. Python3中内置函数callable介绍

          Python3中的内置函数callable接受一个对象参数,如果此对象参数看起来可调用,则callable函数返回True,否则返回False.如果返回True,则调用仍有可能失败:但如果 ...

  4. 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_黑科技教学丨Win10竟然内置了一台虚拟机?教你如何玩转它...

    常玩软件的小伙伴,肯定都知道虚拟机,自然也听说过业界最富名气的Vmware.不过那家伙太庞大了,庞大到一般的电脑跑起来都费劲.其实随着自媒体流行,很多小伙伴也都有了使用虚拟机的需求,比方说录制教程.测 ...

  5. 虚拟机机操作系统已禁用 cpu。请关闭或重置虚拟机。_黑科技教学丨Win10竟然内置了一台虚拟机?教你如何玩转它...

    常玩软件的小伙伴,肯定都知道虚拟机,自然也听说过业界最富名气的Vmware.不过那家伙太庞大了,庞大到一般的电脑跑起来都费劲.其实随着自媒体流行,很多小伙伴也都有了使用虚拟机的需求,比方说录制教程.测 ...

  6. 客户机操作系统已禁用 cpu。请关闭或重置虚拟机。_Win10竟然内置了一台虚拟机?教你如何玩转它...

    常玩软件的小伙伴,肯定都知道虚拟机,自然也听说过业界最富名气的Vmware.不过那家伙太庞大了,庞大到一般的电脑跑起来都费劲.其实随着自媒体流行,很多小伙伴也都有了使用虚拟机的需求,比方说录制教程.测 ...

  7. angular 判断字符串为空_总结:44个Python3字符串内置方法大全及示例

    概述 Python中字符串是作为一种强大的处理工具集的存在,而不是类C中使用的那么难受.因为Python提供了一系列字符串操作的方法,从大小写转换.切片操作到查找等等应有尽有,几乎满足日常的使用场景, ...

  8. 牛逼,竟然有人开源躺平学习资料!

    点击关注公众号,回复"1024"获取2TB学习资源! 最近「躺平」这个词火了,先看看躺平的概念吧. 网络流行词语,指年轻人出于对压抑的工作文化的失望,与其跟随社会期望坚持奋斗,不如 ...

  9. python如何判断字典中是否存在某个键_总结:11个Python3字典内置方法大全及示例...

    概述 字典有着类似列表的高灵活度的特点,而与列表通过偏移索引的存取元素的方式不同,字典是通过无序的键来存取键值对的,即字典是任意对象的无需集合,可在原处增加或减少,且支持任意深度的嵌套(即可以包含诸如 ...

最新文章

  1. java如何恢复成eclipse项目,清理一下垃圾,Eclipse里面的项目全部不见了,怎么恢复...
  2. 宝宝树携手网易云信打造母婴咨询沟通新体验
  3. Cannot resolve bean 'xxx' less... (Ctrl+F1) Inspection info:Checks autowir
  4. vld检测不输出_输出轴热处理形变超差,找找原因
  5. implicit request ?
  6. postfix过滤器名称不一致导致postfix/qmg:warning: connect to transport xxxx: No such file or directory...
  7. c#同时上传文件和参数,Java接收的完整教程,炒鸡简单!网上的教程弱爆了!
  8. 小米这个系列绝了!7款之后再添新机,完全分不清
  9. 2015过年之前计划
  10. 犀牛书学习笔记(3):函数
  11. 微信第三方平台公众号授权
  12. 一个分组查询的SQL 常用算法(附源码可直接执行)
  13. 2021Java笔试题总结!三星java经典手机游戏
  14. web前端之跳一跳网页版小游戏
  15. 捕获组合键 键盘组合键
  16. 大学计算机基础与实训教程第,大学计算机基础与实训教程
  17. 不同范数下的余弦定理_什么是绝对矩阵范数?
  18. 【Python 每日一技】根据任意分隔符分割字符串
  19. 从老板的裤裆拉链看 Google 管理之道
  20. 【灯哥开源四足机器人】推荐一个开源四足机器狗项目,8自有度,两个舵机控制一个腿,apache开源协议的,已经迭代了好多个版本了,设计的非常好。有官方淘宝店,没有3D打印机的可以购买散装零件自己组装

热门文章

  1. 悲剧了 花一千多买的三星的固态硬盘 突然无法访问了,用了这个命令好呆又能访问了
  2. 浪潮nf5270m4导轨安装_浪潮NF5270M4安装windows2012+FTP服务器
  3. CockroachDB的raft优化
  4. 中北校赛练习里的一道题,比较难写 htu1602
  5. 怎么更改图片的尺寸?照片尺寸大小怎么改?
  6. ieframe.dll修复方法
  7. vscode+springboot+vue前后端分离实现饭店点餐管理系统(二)
  8. 如何破解计算机拒绝访问u盘,高手应对U盘拒绝访问有绝招
  9. windows读写linux文件,【转载】在Windows下使用Ext2Fsd极速读写Linux硬盘
  10. matlab中sum函数对矩阵的求和总结