python3标准库difflib

如何系统地学习Python(四)标准库(二) 应用方面,weakref模块主要用于解决一些循环引用的问题,例如在使用回调函数的时候,如果回调函数中引用了外部的对象,可能会导致循环引用,从而导致对象无法被垃圾回收。另外,weakref模块也可以用于实现缓存和对象池等功能,因为它允许在不增加对象引用计数的情况下访问对象,这样可以避免增加对象的引用计数导致对象无法被垃圾回收的问题,从而实现更好的内存管理。特别是当需要复制的对象比较复杂,包含多层结构,或者包含了其他可变对象时,使用copy模块可以确保复制的完整性,避免对原对象的修改。 阅读详情

参考于标准库,关于difflib详细说明可以查看标准库
difflib中文说明文档

difflib模块有什么用?

可以比较序列之间的差异,然后返回增量信息,增量信息前面符号说明

符号意义
‘-’序列1独有
‘+’序列2独有
‘ ‘两个序列都有
‘?’行不在任一输入序列

difflib提供的用于比较的API

函数的a,b参数均为接收字符串列表如[‘a’,‘b’,‘c’,‘d’],如果是文件可以f.readlines()直接获得字符串列表
作用都为比较a,b两个序列,返回增量信息
diff_bytes是字节串的比较

函数简单用法
context_diff(a,b,fromfile=’’,tofile=’’,fromfiledate=’’,tofiledate=’’,n=3,lineter=’\n;)context_diff([‘1’,’2’,’3’], [‘1’,’2’,’5’],fromfile=’one.py’,tofile=”two.py”)
ndiff(a,b,linejunk=None,charjunk=IS_CHARACTER_JUNK)difflib.ndiff([‘a’,’b’,’c’],[‘a’,’bb,’c’])
unified_diff(a,b,fromfile=’’,tofile=’’,fromfiledate=’’,tofiledate=’’,n=3,lineterm=’\n’)unified_diff([‘a’,’v’,’c’,’d’],[‘aa,’cv’,’dd’,’d’],fromfile=’brefore’,tofile=’after’)
diff_bytes(dfunc,a,b,fromfile=b’’,tofile=b’’,fromfiledate=b’’,tofiledate=b’’,n=3,lineterm=b’\n’)unified_diff([b‘a’,b’v’,b’c’,b’d’],[b‘aa,b’cv’,b’dd’,b’d’],fromfile=’brefore’,tofile=’after’)

difflib提供的类

  • SequenceMatcher
    • 灵活的类,比较任何类型的序列对,只要序列元素为hashable
#初始化时候给定两个序列
s = SequenceMatcher(None,’abcd’,’abcd abcd’)
#可以用函数更改要比较的两个序列
s.setseqs(‘111’,’222’)
s.set_seqs1(‘aaa’)
s.set_seq2(‘bbb’)

#找到最长的子串匹配
s.find_longest_match(0,5,0,9)  --> Match(a=0,=4,size=5)

#找到所有的子串匹配
s.get_matching_blocks()
-->[Match(a=0,b=0,size=2),Match(a=3,b=2,size=2),Match(a=5,b=4,size=0)]

#返回描述如何把a变成b的5元组列表,每个元组的形式为(tag,i1,i2,j1,j2),第一个元组中i1==j1==0,其余元组中i1等于前一个元组的i2,j1也等于前一个元组的j2
a = ‘qabxcd’
b = ‘abycdf’
s = SequenceMatcher(None,a,b)
for tag, i1, i2, j1, j2 in s.get_opcodes():
print('{:7}   a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format(tag, i1, i2, j1, j2, a[i1:i2], b[j1:j2]))
  • Differ
    – 比较由文本行组成的序列(每个字符串后面要是\n),产生可供人阅读的差异信息:
d = Differ() #初始化
#该类比较的对象需要\n为结尾
a=’’’
a
b
‘’’.splitlines()
b = ‘’’
c
b
‘’’.splitlines()

d.compare(a,b) #比较,返回增量信息
  • HtmlDiff
    – 创建HTLM表格,并排逐行显示文本比较
a = HtmlDiff() #初始化
b1 = [‘a’,’b’,’c’,’d’]
b2 = [‘aa’,’bb’,’cc’,’x’]
#两个函数都会返回html字符串
c = a.make_file(b1,b2) 
d = a.make_table(b1,b2)

如果要快速得到比较可以使用difflib提供的四个函数,Differ类也可用于比较可能更麻烦
如果需要结果为HTML表格,则使用HtmlDiff类
如果需要得到两个文本串的相似度,匹配,如果从一个转换到另一个就使用SequenceMatcher

实例:比较两个文件的差异

import sys
import difflib
from pprint import pprint


def main():
    #获取命令行的输入
    if len(sys.argv) <= 2:
        print('你需要输入两个文件')
        print('例如这样:python test.py 1 2')
        return 0
    a = sys.argv[1]
    b = sys.argv[2]

    #读取文件
    f1 = open(a,'r')
    f2 = open(b,'r')
    text1 = f1.readlines()
    text2 = f2.readlines()
    #print(text1)
    #print(text2)

    #产生差异增量格式信息,三个函数和一个类结果差不多
    #rel = difflib.context_diff(text1,text2)
    #rel = difflib.unified_diff(text1,text2)
    #rel = difflib.ndiff(text1,text2)
    d = difflib.Differ()
    rel = d.compare(text1,text2)

    print('-------开始显示比较结果-------')
    pprint(list(rel))

if __name__ == "__main__":
    main()
当OTN网络遭遇LOS告警:5个运维老手才知道的故障定位技巧(含CA动作对照表) 本文深入解析OTN网络中LOS告警的实战定位技巧,涵盖光功率深度诊断、模块差异分析及核心的CA动作机制。通过逆向追踪告警流与对照速查表,帮助运维人员快速锁定故障段落,区分硬软故障,并掌握系统健康度评估方法,从而提升排障效率与网络稳定性。 阅读详情

相关推荐

手把手教你排查Abaqus中的Johnson-Cook损伤参数:避免因d3正负号导致的仿真失败

本文详细解析了Abaqus中Johnson-Cook损伤参数d3正负号设置的关键问题,帮助用户避免因参数错误导致的仿真失败和Excessive distortion报错。通过对比不同文献定义、提供实操指南和典型错误排查流程,有效提升非线性分析的准确性和效率。

weixin_33960567的博客 355

python中difflib模块祥解

一 difflib模块 difflib模块:是提供的类和方法用来进行序列的差异化比较,它能够比对文件并生成差异结果文本或者html格式的差异化比较页面 1) Differ:以文本格式显示结果 import difflib text1 = ''' 1. Beautiful is better than ugly. 2. Explicit is better t...

weixin_42668123的博客 5335

具身智能与空天具身智能:从理论到实践的跨领域融合

本文深入探讨了具身智能从理论到实践的发展,重点分析了空天具身智能这一前沿领域。文章阐述了如何为AI赋予“身体”,使其通过与环境实时交互进化智能,并详细拆解了构建空天智能体所需的核心技术模块,包括多模态感知、基于大模型的决策规划以及鲁棒控制。同时,结合山区电力线自主巡检等实战案例,展望了多智能体协同与标准化等未来方向。

weixin_29045585的博客 533

python3 diff函数案例

文章目录适用场景一、difflib是什么?二、使用步骤1.代码结构2.主文件testdiff.py3.测试数据三、实现效果?总结 适用场景 测试过程中,经常需要比较相同接口在不同环境下的返回体进行比较,如线上环境和UAT比较。 提示:以下是本篇文章正文内容,下面案例可供参考 一、difflib是什么? python difflib模块实现两个文件差异对比,并输出html格式。 二、使用步骤 1.代码结构 结构如下: 该处使用的aa.txt,bb.txt为自定义返回体 2.主文件testdiff.py

花开花落的博客 5051

Cocos Creator 3D音频定位实战:从原理到沉浸感实现

3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案,

weixin_30972263的博客 293

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

Difflib —— 有趣的 Python 库

difflib是 Python 标准库的一部分,无需额外安装即可使用。这个库由多个部分组成,主要提供了用于比较序列之间的差异和相似度计算的类和函数。它可以用来比较文件、字符串等,并可以生成差异结果的多种报告,这样我们便可以直观地看到不同之处。由于difflib是随 Python 标准发行版自带的,它支持几乎所有主流的 Python3 版本。虽然这个库可能不像其它第三方库(如 git 中的 diff)那样名声显赫,但在处理文本比对、合并等问题时,difflib是一个相当有用且强大的工具。

m0_59236602的博客 3223

最小二乘法(看完即会)

其中,X是数据矩阵,每一行是一个数据点,每一列是一个自变量(包括截距项),Y是观测值向量,β是待求的系数向量。为了找到使S最小的a和b的值,我们需要对S求关于a和b的偏导数,并令它们等于零。最小二乘法的数学公式通常用于线性回归问题,其中目标是找到一条直线(或更高维度的超平面),使得这条直线与给定数据点的误差平方和最小。同样地,通过求偏导数和令偏导数等于零,我们可以得到一个线性方程组,解这个方程组可以找到最优的b_0, b_1, …+ b_m*x_m,其中b_0是截距,b_1到b_m是各个自变量的系数。

qlkaicx的博客 2万+

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

点上方“菜鸟编程大本营”,选择“星标” 原创干货,第一时间送达 对于“大家来找茬”这个游戏而言,小伙伴们肯定不会陌生,找茬游戏对于大家的耐心和细心是一个非常大的考验。对于python程序来...

cainiao_python的博客 600

AI辅助决策支持系统架构设计避坑:5个常见技术选型误区及正确方案

AI辅助决策支持系统(AI-DSS)是指通过人工智能技术(机器学习、自然语言处理、知识图谱等)赋能传统决策支持系统,帮助决策者在复杂业务场景中(如供应链优化、风险控制、医疗诊断、金融投资等)提升决策效率和准确性的系统。与传统BI工具不同,AI-DSS不仅能"展示数据",还能基于数据生成"决策建议"甚至"自动执行决策"。技术选型是AI-DSS架构设计的核心环节,涉及数据处理引擎、模型框架、算力资源、集成接口等关键组件的选择。效果不达标:模型预测精度低、决策建议不可用;成本失控:算力资源浪费、维护成本高企。

AIGC应用创新大全的博客 1382

claude-hub:GitHub上的AI开发助手,让Claude自动帮你写代码、审代码、合代码

代码不再是人写的,而是人引导 AI 写的。在这个时代,GitHub 不再只是一个代码托管平台,而是 AI 开发代理的工作台。每一个 issue、每一条 PR,都可能是一次与 AI 合作的机会。未来属于那些敢于把开发流程交给 AI 来优化的人——他们不是在取代自己,而是在放大自己的影响力。📌关注本系列文章,我们将持续输出关于 AI 编程、GitHub 自动化、AI Agent 产品化的深度分析。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 1373

Python 3 自动化运维之比较字符串差异difflib模块

#1.控制台打印输出 #字符串差异比较 import difflib s1 = """text1: 我是第一个字符串。 我用Python! and so on. """ #以行进行分割 s1_lines = s1.splitlines() s2 = """text2: 我是第二个字符串。 我用python。 and so on.""" s2_lines = s2.splitlin

筑梦之路 2538

elevation mapping算法3之使用D435i相机离线或在线订阅点云和tf关系生成高程图

本文主要学习使用D435i相机发出的点云作为高程图的点云输入,如何离线输入点云生成高程图,进一步学习如何在线订阅点云生成高程图。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 3489

python3文件比较_比较两个文件的异同Python3 标准库difflib 实现

比较两个文件的异同Python3 标准库difflib 实现对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼。可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好。这时候使用python的标准库difflib就能满足我们的需求。下面这个脚本使用了difflib和argparse,argparse用于解析我们给此脚本传入的两...

weixin_39637646的博客 193

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

python在线diff工具在哪_Python3标准库:difflib差异计算工具

1. difflib差异计算工具此模块提供用于比较序列的类和函数。 例如,它可以用于比较文件,并可以产生各种格式的不同信息,包括HTML和上下文以及统一格式的差异点。有关目录和文件的比较,请参见filecmp模块。class difflib.SequenceMatcher(None,s1,s2)这是一个灵活的类,可用于比较任何类型的序列对,只要序列元素为 hashable 对象。 其基本算法要早于...

weixin_39932330的博客 717

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python标准库说明_python标准库difflib介绍

python标准库difflib介绍简介从python2.3起difflib成为了标准库。无需安装即可使用。之前遇到一个问题,我本地的代码没有问题,而服务器上的则一直报404错误。肉眼对比了一下路径,感觉是完全一样的。在网上找了下字符串对比工具,没有一个好用。后来还是有个同事眼力好,发现有个一字符的大小写问题导致的。那会如果知道python有difflib库的话,早就把问题解决了。简单的对比以下示...

weixin_39657575的博客 298

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python 3 module of the week

在网上看到一篇比较好的学习python标准库的tutoria: Python 3 Module of the Week. 决定学习一下,因为很多是时候等到需要用的时候再去临时学习,虽然大多数情况下也能对付过去,但是缺点很明显: 分散精力:我需要集中精力学习这些基础知识, 而不是专注于我要解决的问题。 不知道某些库的存在:有时候没想到有些操作会有标准库实现,如果我感觉这个任务很简单,我会自己去实现。

NG7711 7608

Python 官方的中文文档

今天打开Python documentation 查阅函数使用方法,像往常一样,我打开了百度翻译 突发奇想,要不上网找找有没有哪位大佬翻译好的中文文档,发现python官网上竟然发布了python的中文文档…(python初学者表示之前真的不知道) Python官方文档链接:https://docs.python.org/zh-cn/3/ 其中包含了从2.7到3.8各个版本的文档 这里是标准库...

qq_45504119的博客 967

配置文件内容差异对比difflib

difflib为python的标准库模块,无需安装。用于对比文本之间的差异。并且支持输出可读性比较强 的HTML文档,类似Linux系统的diff 命令。应用场景: 代码和配置文件差异对比。 准备工作: 两个不同时间备份的Nginx配置文件 Pycharm集成化编程工具 import difflib import hashlib def find_file_different(filename1, filename2, output_filename): ## 1.分析两个配置文件的不同,需

qq_27172205的博客 962

python 文件内容对比_【IT专家】Python自动化运维笔记(四):使用difflib模块实现文件内容差异对比...

本文由我司收集整编,推荐下载,如有疑问,请与我司联系Python自动化运维笔记(四):使用difflib模块实现文件内容差异对比2017/10/02593模块介绍我们可以通过Python的标准库模块(Python2.3以上就已经自带)difflib模块来实现文件内容的文本差异对比。并且支持输出可读性比较强的HTML文档,与Linux下的diff命令相似。可以使用difflib对比代码,配置文件的...

weixin_39629188的博客 92

Python 3 标准库深度指南:从入门到精通

Python 被誉为“带着电池(batteries included)”的语言,这背后所指的正是其强大而全面的标准库(Standard Library)。它是一组随 Python 解释器一同安装的模块和包的集合,无需任何额外安装步骤(如),即可在您的代码中通过import关键字直接使用。从最简单的字符串操作到复杂的网络服务、从基础的数据结构到高级的并发编程,标准库提供了几乎所有通用编程场景的解决方案。核心优势零依赖部署。

浩瀚之水的专栏 502

用python标准库difflib比较两份文件的异同

【需求背景】 有时候我们要对比两份配置文件是不是一样,或者比较两个文本是否异样,可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好。这时候使用python的标准库difflib就能满足我们的需求。 下面这个脚本使用了difflib和argparse,argparse用于解析我们给此脚本传入的两个参数(即两份待比较的文件),由difflib执行比较,...

宝罗Paul 的博客 3万+

difflib 标准库详解:Python 文本对比的利器

difflib 模块是 Python 标准库中的一个模块,用于比较文本之间的差异

powerbiubiu的博客 8770

python之difflib

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

qq_41386300的博客 3068

Python——difflib模块(对比文件差异)

文章目录difflib简介常用函数`difflib.Differ()`示例`difflib.HtmlDiff()`示例 difflib简介 我们知道,在shell中,可以直接使用vimdiff命令比对文本。 vimdiff a.txt b.txt 在Python中如何对比文件差异呢? 我们可以导入difflib库,difflib是python的标准库,无需安装。 作用:对比文本之间的差...

weixin_38044888的博客 5645
下一篇: python每日小程序1 24点游戏
ikalpa
博客等级 码龄9年 19粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值