Python中高效实现文本对比的超全实战教程

 更新时间:2026年08月13日 08:24:31   作者:detayun  
在工作中我们经常需要进行文本对比,本文整理了了Python中多种高效的文本对比方法并对比了不同方案的特点和适用场景,希望对大家有所帮助

前言

在工作中我们经常需要文本对比场景:

  • 对比两份文档、配置文件差异
  • 自动化测试校验返回文本变更
  • 文本查重、模糊匹配相似度
  • 自动找出哪里删改、哪里新增

Python 内置强大的文本比对工具,无需复杂算法,几行代码即可实现专业级文本对比。

本篇博客涵盖:精准逐行对比、差异可视化、文本相似度计算、模糊匹配,全部可直接运行。

一、最简单对比:精准全等判断

适合场景:只判断是否一模一样,不需要看差异

代码示例

a = "今天学习Python文本对比"
b = "今天学习Python文本对比"
c = "今天学习Python教程"

print(a == b) # True
print(a == c) # False

业务常用:忽略大小写/空格

def clean_text(s):
    return s.replace(" ","").lower()

print(clean_text(a) == clean_text(c))

优点:超快、零依赖

缺点:看不到具体哪里不一样

二、专业对比:Python内置 difflib(查看详细差异)

Python 自带 difflib 标准库,是文本对比神器,可以精准输出:

  • 删除的行
  • 新增的行
  • 修改的内容

逐行文本差异对比

import difflib

text1 = """第一行内容
第二行内容
第三行内容
"""

text2 = """第一行内容
第二行【已修改】
第三行内容
第四行新增内容
"""

# 分割成行
lines1 = text1.splitlines(keepends=True)
lines2 = text2.splitlines(keepends=True)

diff = difflib.Differ()
result = diff.compare(lines1, lines2)

print("".join(list(result)))

输出标识说明

  • - 旧文本存在、新文本删除
  • + 新文本新增内容
  • 无符号:内容一致

三、生成可视化对比网页(超实用)

difflib 可以一键生成 HTML对比页面,带颜色高亮,可直接浏览器打开。

import difflib

text1 = """1、Python基础
2、Python爬虫
"""

text2 = """1、Python基础
2、Python数据分析
3、Python人工智能
"""

diff = difflib.HtmlDiff()
html = diff.make_file(
    text1.splitlines(),
    text2.splitlines(),
    fromdesc="旧文本",
    todesc="新文本"
)

with open("diff.html","w",encoding="utf-8") as f:
    f.write(html)

print("对比网页已生成!")

运行后打开 diff.html,即可看到:

  • 红色:删除内容
  • 绿色:新增内容
  • 左右分栏对比

非常适合工作汇报、自动化测试报告。

四、文本相似度对比(查重、模糊匹配)

很多场景不是判相等,而是判相似度,例如文章查重、语句匹配。

代码实现

import difflib

s1 = "Python文本对比教程"
s2 = "Python文本比对教程"
s3 = "Java开发教程"

m1 = difflib.SequenceMatcher(None, s1, s2)
m2 = difflib.SequenceMatcher(None, s1, s3)

print("s1-s2 相似度:", round(m1.ratio(),2))
print("s1-s3 相似度:", round(m2.ratio(),2))

输出:

s1-s2 相似度: 0.92
s1-s3 相似度: 0.15

可以结合阈值实现智能查重:

  • 相似度>0.8:判定为高度相似
  • 相似度<0.3:判定为完全不同

五、高级模糊匹配(fuzzywuzzy)

原生库精度有限,工业级模糊匹配推荐 fuzzywuzzy

安装

pip install fuzzywuzzy python-Levenshtein

代码

from fuzzywuzzy import fuzz

a = "我喜欢Python文本对比"
b = "我非常喜欢Python文本对比技术"

print(fuzz.ratio(a,b))         # 整体相似度
print(fuzz.partial_ratio(a,b)) # 局部匹配
print(fuzz.token_sort_ratio(a,b)) # 无序词语匹配

适合:短句对比、文案查重、OCR文本比对、搜索匹配。

六、各种对比方案选型总结

方案特点适用场景
字符串 ==极速精准简单一致校验
difflib.Differ查看行差异文档/代码对比
difflib.HTML可视化对比生成对比报告
SequenceMatcher相似度打分简单查重
fuzzywuzzy超强模糊匹配文案、短句查重匹配

总结

  1. 精准一致判断直接用 ==
  2. 需要看差异、改了哪里用内置 difflib
  3. 需要可视化报告用 HtmlDiff 生成网页
  4. 查重、模糊匹配用 SequenceMatcher / fuzzywuzzy

Python 文本对比完全可以零算法基础实现,覆盖 99% 工作场景。

到此这篇关于Python中高效实现文本对比的超全实战教程的文章就介绍到这了,更多相关Python文本对比内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用python写一个自动浏览文章的脚本实例

    使用python写一个自动浏览文章的脚本实例

    今天小编就为大家分享一篇使用python写一个自动浏览文章的脚本实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 详解Numpy数组转置的三种方法T、transpose、swapaxes

    详解Numpy数组转置的三种方法T、transpose、swapaxes

    这篇文章主要介绍了详解Numpy数组转置的三种方法T、transpose、swapaxes,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 利用Python暴力破解zip文件口令的方法详解

    利用Python暴力破解zip文件口令的方法详解

    这篇文章主要给大家介绍了关于利用Python暴力破解zip文件口令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • Python机器学习从ResNet到DenseNet示例详解

    Python机器学习从ResNet到DenseNet示例详解

    ResNet极大地改变了如何参数化深层网络中函数的观点。稠密连接网络(DenseNet)在某种程度上是ResNet的逻辑扩展。让我们先从数学上了解下
    2021-10-10
  • 使用Python在Word文档中创建表格并设置各种格式

    使用Python在Word文档中创建表格并设置各种格式

    在现代办公环境中,Word 文档是信息传递和报告输出的重要载体,本文将使用 Free Spire.Doc for Python 展示如何在 Word 文档中创建基础表格、设置表格样式、合并与拆分单元格、创建嵌套表格等实用功能,需要的朋友可以参考下
    2026-03-03
  • Python实现最常见加密方式详解

    Python实现最常见加密方式详解

    这篇文章主要介绍了Python实现最常见加密方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • C++与Python混合编程实战(附详细示例)

    C++与Python混合编程实战(附详细示例)

    这篇文章主要介绍了C++与Python混合编程的相关资料,通过将 Python 与 C/C++ 混合编程,可以有效提高关键任务的执行效率,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-10-10
  • 深入解析Python中的JSON比较

    深入解析Python中的JSON比较

    进行接口自动化时,有时候我们需要断言的数据比较多,一个字段一个字段进行断言比较麻烦,那么如何利用Python实现轻松判断数据格式是否相同呢,下面小编就为大家详细讲讲
    2023-09-09
  • Python Flask入门

    Python Flask入门

    今天小编就为大家分享一篇Python Flask的入门教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-11-11
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    这篇文章主要介绍了pandas基础Series与Dataframe与numpy对二进制文件输入输出,series是一种一维的数组型对象,它包含了一个值序列和一个数据标签
    2022-07-07

最新评论