python中difflib内置模块之文本对比

  • 什么是difflib? 用来做什么?
    difflib为python的标准库模块,无需安装。
    作用时对比文本之间的差异。
    并且支持输出可读性比较强的HTML文档,与Linux下的diff 命令相似。
    在版本控制方面非常有用。
  • 符号理解
    符号 含义
    ‘-‘ 包含在第一个系列行中,但不包含第二个。
    ‘+‘ 包含在第二个系列行中,但不包含第一个。
    ‘ ‘ 两个系列行一致
    ‘?‘ 存在增量差异
    ‘^‘ 存在差异字符
  • import difflib

    text1 = ‘‘‘ 1. Beautiful is better than ugly.

    1. Explicit is better than implicit.
    2. Simple is better than complex.
    3. Complex is better than complicated.
      ‘‘‘.splitlines(keepends=False)
      print(text1) 将多行文本按行分隔,返回一个列表,不保留行尾换行符

    text2 = ‘‘‘ 1. Beautiful is better than ugly.

    1. Simple is better than complex.
    2. Complicated is better than complex.
    3. Flat is better than nested.
      ‘‘‘.splitlines(keepends=True)
      print(text2) # 将多行文本按行分隔,返回一个列表,保留行尾换行符

    """
    splitlines()按照行分割
    返回一个包含各行作为元素的列表
    参数:
    keepends=True 保留换行符
    keepends=False 不包含换行符
    """
    #实现linux里面类似diff命令的功能
    #d = difflib.Differ()
    #print(‘‘.join(list(d.compare(text1,text2))))
    d = difflib.HtmlDiff()
    htmlContent = d.make_file(text1,text2)
    #print(htmlContent)
    with open(‘diff.html‘,‘w‘) as f:
    f.write(htmlContent)

    linux文件之间的对比

    首先将文件内容读取出来,然后按照上述方法进行处理即可:

    import difflib

    filename1 = ‘/tmp/passwd‘
    filename2 = ‘/tmp/passwd1‘
    with open(filename1) as f1,open(filename2) as f2:
    content1 = f1.read().splitlines(keepends=True)
    content2 = f2.read().splitlines(keepends=True)
    d = difflib.HtmlDiff()
    htmlContent = d.make_file(content1,content2)
    with open(‘passwdDiff.html‘,‘w‘) as f:
    f.write(htmlContent)

    原文地址:https://blog.51cto.com/12893781/2407012

    时间: 2024-10-27 14:01:26

    python中difflib内置模块之文本对比的相关文章

    Python中的内置模块与生成器迭代器-day5

    Python3 中内置模块 Python中的列表生成式 Python生成器 Python迭代器 一.Python中的内置模块 PS:作为一个新手如果你不想使用IDE又想使用Python中的自动补全,可以下载使用ipython.下面实例中也大多是ipython输入和输出的内容. 安装ipython:pip3 install ipython Python3-内置函数 - abs() 绝对值 - all() 都为真 - any() 有一个为真 - ascii() 把字符串转换成ASCII - bin(

    Python中raw_input() & input() 的功能对比

    raw_input的功能是方便的从控制台读入数据.  input与raw_input都是Python的内建函数,实现与用户的交互,但是功能不同. 一.raw_input 下面介绍让raw_input的几种功能. 1.输入字符串 1>>> raw_input_A = raw_input("raw_input:") 2 raw_input:abc 3>>>type(raw_input_A) 4 <type 'str'> 上面输入的abc为字符

    Python中的指针:有什么意义?

    如果您曾经使用过C或C ++等低级语言,那么您可能已经听说过指针.指针允许您在部分代码中创建高效率.它们也会给初学者带来困惑,并且可能导致各种内存管理错误,即使对于专家也是如此.那么它们在Python中的位置,以及如何在Python中模拟指针? 为什么Python没有指针? 事实是我不知道.Python中的指针本身可以存在吗?可能,但指针似乎违背了Python的禅宗.指针鼓励隐含的变化而不是明确的变化.通常,它们很复杂而不是简单,特别是对于初学者.更糟糕的是,他们乞求用脚射击自己的方法,或做一些

    Python中的文本(一)

    本文主要记录和总结本人在阅读<Python标准库>一书,文本这一章节的学习和理解. 其实在Python中,使用文本这样的一些方法是特别常用的一件事.在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了. 1.1 函数 string类中的capwords()和maketrans(). capwords()的作用是将一个字符串中的所有单词的首字母大写: maketrans()函数将创建转换表,可以translate()方法将一组字符修改成另一组字符,这种做法

    python实现将文件中的每一行文本记录,保存到MongoDB数据库,并防止重复插入

    文本如下: #日期 流水号 被浏览页面URL 第×页 访问者IP 访问时间 是否入口 操作系统 浏览器 语言 时区 屏幕分辨率 屏幕色彩位数 省份 城市 接入商 上网场所 是否安装ALEXA 2014-7-17 11452775496 http://www.imaibo.net/space/178120 1 59.41.23.101 2014-7-17 13:38:14 0 Windows XP Chrome 21.0.82014-7-17 11452775466 http://www.imai

    《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

    过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

    python中的文本(二)

    本文主要记录和总结本人在阅读<Python标准库>一书,文本这一章节的学习和理解. 其实在Python中,使用文本这样的一些方法是特别常用的一件事.在一般的情况下,都会使用String这样的一个类,应该算是Python中最基础的一个标准类了. 1.3.6 用组解析匹配 match.groups()会按照表达式中与字符串匹配的组的顺序返回一个字符串序列. 使用group()可以得到某个组的匹配. #组解析 text='This is a text -- with punctuation.' pr

    Python中读取txt文本出现:SyntaxError: (unicode error) &#39;unicodeescape&#39; codec can&#39;t decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决

    windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 1 # 方式一:转义的方式 2 'c:\\users\xxx\desktop\a.txt' 3 #方式二:显式声明字符串不用转义 4 r'c:\users\xxx\desktop\a.txt' 5 #方式三:使用linux的路径 6 'c:/users/xxx/desktop/a.txt' Python中读取txt文本

    图片哈希概论及python中如何实现对比两张相似的图片

    Google 以图搜图的原理,其中的获取图片 hash 值的方法就是 AHash. 每张图片都可以通过某种算法得到一个 hash 值,称为图片指纹,两张指纹相近的图片可以认为是相似图片. 以图搜图的原理就是获取你上传的图片的指纹,和图库的图片指纹对比,查找出最相似的若干张图片展示. 除了以图搜图,图片哈希还可以做什么呢?例如图片检索,重复图片剔除,图片相似度比较等等. 这种哈希算法大概有 4 种: 1,差值哈希:DHash(Difference Hash)2,均值哈希:AHash(Average