python里使用difflib库的Differ来比较文本
Python 比较 文本 使用
2023-09-14 09:10:35 时间
在软件开发里,常常需要比较不同版本的代码,因为开发人员在一个月,或者一年之后,发现代码已经更改了,但会忘记更改那里了,怎么办呢?就会拿当前的版本代码与一年之前的版本代码进行比较,这时就会找到差异的地方。又或者当一个作家正在写一篇文章时,已经写了好几十万字,某一天忘记锁屏电脑了,给一个熊儿子不小心打入一个字,并且已经保存到电脑里。这时作家要把这个字找出来,怎么办呢?一个字一个字地去比对,那是多么麻烦的事情。如果能拿到旧版本的文档,再与新版本的文档进行比较,把差异化的结果显示出来,这样就省了很多时间。为了比较文本的差异化,在python里提供difflib库的Differ来比较文本,如下面的例子:
输出结果如下:
Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Integer eu lacus accumsan arcu fermentum euismod. Donec
- pulvinar porttitor tellus. Aliquam venenatis. Donec facilisis
+ pulvinar, porttitor tellus. Aliquam venenatis. Donec facilisis
? +
- pharetra tortor. In nec mauris eget magna consequat
? -
+ pharetra tortor. In nec mauris eget magna consequat
- convalis. Nam sed sem vitae odio pellentesque interdum. Sed
? - --
+ convalis. Nam cras vitae mi vitae odio pellentesque interdum. Sed
? +++ +++++ +
consequat viverra nisl. Suspendisse arcu metus, blandit quis,
rhoncus ac, pharetra eget, velit. Mauris urna. Morbi nonummy
molestie orci. Praesent nisi elit, fringilla ac, suscipit non,
tristique vel, mauris. Curabitur vel lorem id nisl porta
- adipiscing. Suspendisse eu lectus. In nunc. Duis vulputate
- tristique enim. Donec quis lectus a justo imperdiet tempus.
+ adipiscing. Duis vulputate tristique enim. Donec quis lectus a
+ justo imperdiet tempus. Suspendisse eu lectus. In nunc.
Differ比较之后显示的规则如下:
1)一行前面有-号是出现在第一个版本,不出现在第二个版本。
2)一行前面有+号是出现在第二个版本,不出现在第一个版本。
3)如果一行里有变化,就会在后面的另外一行里增加一个?显示,并且在这行里显示+或-。
深入浅出Numpy
五子棋游戏开发
http://edu.csdn.net/course/detail/5487
text1 = """Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Integer eu lacus accumsan arcu fermentum euismod. Donec
pulvinar porttitor tellus. Aliquam venenatis. Donec facilisis
pharetra tortor. In nec mauris eget magna consequat
convalis. Nam sed sem vitae odio pellentesque interdum. Sed
consequat viverra nisl. Suspendisse arcu metus, blandit quis,
rhoncus ac, pharetra eget, velit. Mauris urna. Morbi nonummy
molestie orci. Praesent nisi elit, fringilla ac, suscipit non,
tristique vel, mauris. Curabitur vel lorem id nisl porta
adipiscing. Suspendisse eu lectus. In nunc. Duis vulputate
tristique enim. Donec quis lectus a justo imperdiet tempus."""
text1_lines = text1.splitlines()
text2 = """Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Integer eu lacus accumsan arcu fermentum euismod. Donec
pulvinar, porttitor tellus. Aliquam venenatis. Donec facilisis
pharetra tortor. In nec mauris eget magna consequat
convalis. Nam cras vitae mi vitae odio pellentesque interdum. Sed
consequat viverra nisl. Suspendisse arcu metus, blandit quis,
rhoncus ac, pharetra eget, velit. Mauris urna. Morbi nonummy
molestie orci. Praesent nisi elit, fringilla ac, suscipit non,
tristique vel, mauris. Curabitur vel lorem id nisl porta
adipiscing. Duis vulputate tristique enim. Donec quis lectus a
justo imperdiet tempus. Suspendisse eu lectus. In nunc."""
text2_lines = text2.splitlines()
#python 3.6
#蔡军生
#http://blog.csdn.net/caimouse/article/details/51749579
#
import difflib
from difflib_data import *
d = difflib.Differ()
diff = d.compare(text1_lines, text2_lines)
print('\n'.join(diff))
输出结果如下:
Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Integer eu lacus accumsan arcu fermentum euismod. Donec
- pulvinar porttitor tellus. Aliquam venenatis. Donec facilisis
+ pulvinar, porttitor tellus. Aliquam venenatis. Donec facilisis
? +
- pharetra tortor. In nec mauris eget magna consequat
? -
+ pharetra tortor. In nec mauris eget magna consequat
- convalis. Nam sed sem vitae odio pellentesque interdum. Sed
? - --
+ convalis. Nam cras vitae mi vitae odio pellentesque interdum. Sed
? +++ +++++ +
consequat viverra nisl. Suspendisse arcu metus, blandit quis,
rhoncus ac, pharetra eget, velit. Mauris urna. Morbi nonummy
molestie orci. Praesent nisi elit, fringilla ac, suscipit non,
tristique vel, mauris. Curabitur vel lorem id nisl porta
- adipiscing. Suspendisse eu lectus. In nunc. Duis vulputate
- tristique enim. Donec quis lectus a justo imperdiet tempus.
+ adipiscing. Duis vulputate tristique enim. Donec quis lectus a
+ justo imperdiet tempus. Suspendisse eu lectus. In nunc.
Differ比较之后显示的规则如下:
1)一行前面有-号是出现在第一个版本,不出现在第二个版本。
2)一行前面有+号是出现在第二个版本,不出现在第一个版本。
3)如果一行里有变化,就会在后面的另外一行里增加一个?显示,并且在这行里显示+或-。
4)如果一行没有变化,就会在一行前面输出一个空格,以便对齐。
深入浅出Numpy
http://edu.csdn.net/course/detail/6149
Python游戏开发入门
你也能动手修改C编译器
纸牌游戏开发
http://edu.csdn.net/course/detail/5538
五子棋游戏开发
http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672
相关文章
- 快速入门Python机器学习(14)
- pycharm安装第三方库失败_pycharm怎么安装python库
- python qt是什么_初识Python与Qt「建议收藏」
- python编程前景_Python前景如何,学完后可以从事方向?
- 简述python变量的命名规则_Python 变量命名规则
- Python 基础问题大全
- python+csv+datetime+pushplus的值班提醒推送2020.12.19
- python关于format的使用
- 【说站】python比较运算如何使用
- 经纬度距离计算 python_Python已知两坐标求距离
- python attrs_Python attrs作用是什么?
- 在python中用来安装第三方库的常用工具_什么库用于安装管理Python扩展包
- python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」
- python 微信自动回复机器人
- 使用Python根据原始Excel表格批量生成目标Excel表格
- python多种创建工厂模式场景
- Python实现实验室药品管理和预警系统(毕设源码)
- python实现GUI自动化(控制鼠标)|屏幕快照&图像识别基础
- Python入门
- 安装Python时,报错 zipimport.ZipImportError: can’t decompress data; zlib not available详解编程语言
- Python 自动化库介绍 PySimpleGUI
- 2020年10个不错的Python库
- python用字典统计单词或汉字词个数示例
- 使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)