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

author author     2022-12-18     294

关键词:

  • 什么是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)

    python入门之模块——第2关:内置模块中的内置函数(代码片段)

    任务描述我们在安装好了Python配置文件后,也将Python本身带有的库也安装好了,Python自带的库也叫做Python的内置模块。Python的内置模块是Python编程的重要组织形式,内置模块中的内置函数也极大方便了编程过程中对函... 查看详情

    python使用difflib模块比较两个文件内容异同,同时输出html易浏览(代码片段)

    因工作需求,需要对比连个文件异同,并输出html格式来对比。#!/usr/bin/python#-*-coding:utf-8-*-importsysimportdifflibdefread_file(filename):try:withopen(filename,‘r‘)asf:returnf.readlines()exceptIOError:print("ERROR:没有找到文件:%s或读取文 查看详情

    python:对比两段文本和两个文件不同的地方

    ...不包含换行符,如果为True,则保留换行符。用的是Pythondifflib模块:difflib是Python提供的比较序列(stringlist)差异的模块。实现了三个类:1>SequenceMatcher任意类型序列的比较(可以比较字符串)2>Differ对字符串进行比较3>HtmlDiff将... 查看详情

    python比较文件差异,difflib类库的使用

    difflib是Python中的一个标准类库,用于比较文本文件或字符串之间的差异。它实现了多种比较算法,包括基于行的比较和基于字符的比较,并提供了多种输出格式。本教程将介绍如何使用difflib类库进行文本比较,包括以下主题:... 查看详情

    python入门之模块——第2关:内置模块中的内置函数(代码片段)

    任务描述我们在安装好了Python配置文件后,也将Python本身带有的库也安装好了,Python自带的库也叫做Python的内置模块。Python的内置模块是Python编程的重要组织形式,内置模块中的内置函数也极大方便了编程过程中对函... 查看详情

    python对比两个txt文件内容(代码片段)

    difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式。#!coding=utf-8#2018-9-19importsysimportdifflib#读取配置文件函数defread_file(file_name):try:file_handle=open(file_name,‘r‘)text=file_handle.... 查看详情

    python入门之内置模块--序列化模块(json模块pickle模块)

    Python入门之内置模块--序列化模块(json模块、pickle模块)1、序列化Python中这种序列化模块有三种:?json模块:?不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表[1,2,3]利用json转化成特... 查看详情

    difflib文件差异对比

    1、两个字符串差异对比:#!/usr/bin/env python# -*- coding:utf-8 -*-import difflibtext1 = ‘‘‘text1:This module provides classes and functions for&nb 查看详情

    pythondifflib文本比较利器,入手不亏(代码片段)

    @[toc]一、引言difflib模块:是提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面。其作为python的内置库,有着强大的文本比对功能,此篇介绍五个常用的difflib功能二、... 查看详情

    第五周-第06章节-python3.5-内置模块详解之range模块

    如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文章的介绍。random.random()用于生成用于... 查看详情

    python运维中20个常用的库和模块

    ...spython(http://dnspython.org)Python实现的一个DNS工具包。 4、difflib:difflib作为Python的标准模块,无需安装,作用是对比文本之间的差异。 5、filecmp:系统自带,可以实现文件,目录,遍历子目录的差异,对比功能。 6、smtplib... 查看详情

    模块标准库内置模块

    模块就是类的封装为遵循python的简洁总体理念,让文件尽可能整洁,python允许将类存储在模块中,然后在主程序中进行导入的标准库python中实现系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等功能的模块统称... 查看详情

    python之模块(代码片段)

    模块即一推代码的集合来实现某个功能,使用时直接调用,甚是方便。模块又分为三种自定义模块内置模块第三方模块下面就来介绍介绍什么是内置模块及如何去使用它和内置模块的好处。使用模块模块前首先导入该模块,才能... 查看详情

    python3入门(十三)——常用内置模块之时间日期模块datatime(代码片段)

    1.日期时间模块——datatime  //其他模块例如time、calender等模块暂不展开(1)获取当前时间:datatime.now(): fromdatetimeimportdatetimenow=datetime.now()print(now) 结果:2019-06-0920:58:13.533006//如果仅仅使用import,则需要加全限 查看详情

    python基础之模块之osos.path及os与shutil对比

    一: os对系统进行操作#注:以下操作都在linux环境下操作,且很多运行之前需要做好相关条件importos#(1)system()在python总执行系统命令#os.system("touchceshi.txt")#linux#os.system("ifconfig")#os.system("mspaint") #windows#os.system("ipconfig")& 查看详情

    走入计算机的第二十五天(内置模块3之正则表达式)

    ...式(或RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。正则表达式的功能:字符串的模糊匹配查询。二&... 查看详情

    第五周-第05章节-python3.5-内置模块详解之time与datetime模块

    #pcjimporttime#print(time.localtime())#print(time.time())##print(help(time))#获取time的帮助##time.sleep(1)#睡几秒#print(time.gmtime(10000000000))#convertsecondssinceEpochtoUTCtuple标准时间utc时区#print(time.localti 查看详情

    python的库有多少个?python有多少个模块?

    ...Prettytable主要用于在终端或浏览器端构建格式化的输出。difflib,[Python]标准库,计算文本差异Levenshtein,快速计算字符串相似度。fuzzywuzzy,字符串模糊匹配。esmre,正则表达式的 查看详情