Python 操作 Word:如何查找、替换和批量修改文本
于Word文档的自动化处理里头 , 查找文本以及替换文本 , 属于极基础亦是极频繁的操作当中的一种。不管是成批修改合同里的条款编号 , 亦或是更新报告里的日期信息 , 又或者是于众多文档里统一去调整术语表述 , 具备高效的文本查找替换能力 , 都是文档处理流程的核心部分。这篇文章会讲述怎样在Word文档里达成文本的查找与替换 , 包含普通文本替换 、正则表达式匹配替换以及查找之后高亮显示等实用情形。为什么通过编程实现查找替换在Word里手动运用查找替换功能虽说便利, 然而在如下场景当中, 编程的方式具备无法被替代的优势:环境搭建在开始之前需要安装支持 Word 文档操作的 库。pip install Spire.Doc安装完成后在脚本中导入相关模块即可开始使用。基础文本替换把文档里头特定文本置换成全新内容这种最为基础的替换行为, () 办法获取四个参数, 分别是需查找的文本、替换之后的文本、是不是忽略大小写、是不是全词匹配。from spire.doc import * from spire.doc.common import * inputFile Sample.docx outputFile ReplaceText.docx # 创建文档对象 document Document() # 从磁盘加载 Word 文件 document.LoadFromFile(inputFile) # 将文档中的 word 替换为 ReplacedText # 参数查找文本, 替换文本, 忽略大小写, 全词匹配 document.Replace(word, ReplacedText, False, True) # 保存文档 document.SaveToFile(outputFile, FileFormat.Docx) document.Close()按照布尔情况而言, 关于方法的第二个以及第三个参数, 其作用在于对匹配实施严格程度方面的决定, 当呈现为False的时候, 意味着在匹配过程要区分大小写, 而若呈现为True, 并且是作为第四个参数的时候, 所代表的含义是仅仅匹配完整的单词, 并非是单词其中的一部分, 这样的一种设计状况, 使得替换操作在范围匹配上能够进行精确控制, 进而避免出现误替换情况。使用正则表达式进行替换在需要匹配的文本具备某种模式而非固定字符串情形的时候, 正则表达式也就发挥了作用。比如说, 替换掉全部以 # 开始的标识符、匹配格式特殊的日期或者编号等等。from spire.doc import * from spire.doc.common import * import re inputFile Sample.docx outputFile ReplaceByRegex.docx # 创建文档对象 document Document() # 从磁盘加载 Word 文件 document.LoadFromFile(inputFile) # 创建正则表达式匹配以 # 开头的单词 regex re.compile(r#\w\b) # 使用正则表达式替换匹配的文本 document.Replace(regex, Spire.Doc) # 保存文档 document.SaveToFile(outputFile, FileFormat.Docx) document.Close()在此处运用标准库 re 的 () 方法去创建正则表达式对象, 接着把该对象传递给 .() 方法。凡是匹配此模式的文本都会统一被替换成目标字符串。这种模式格外适宜用来处理具备规律性模式的文本内容, 像这样:查找文本并高亮显示有时, 并非要替换文本内容, 而是得定位, 所有匹配后的文本, 并且去进行视觉标记, 这在文档审核场景里, 于关键词检索结果标记等情况中, 是极为实用的。from spire.doc import * from spire.doc.common import * inputFile Sample.docx outputFile FindAndHighlight.docx # 创建文档对象 document Document() # 从磁盘加载 Word 文件 document.LoadFromFile(inputFile) # 查找所有匹配的文本 textSelections document.FindAllString(word, False, True) # 遍历匹配结果设置高亮颜色 for selection in textSelections: selection.GetAsOneRange().CharacterFormat.HighlightColor Color.get_Yellow() # 保存文档 document.SaveToFile(outputFile, FileFormat.Docx) document.Close()这个方法返回的是一个文本选择方面的集合, 其中每一个元素所代表的是对于文档而言出现的一处匹配位置, 借助能够获取与之相对应的文本范围, 而后再去进行访问。设置属性的高亮颜色, 参数False意味着区分大小写, 参数True意思是进行全词匹配。查找并替换为图片查找到的文本可被换为图片而非仅替换成普通文本, 这种替换方式在批量插入Logo或是批量插入签名, 又或者是批量插入多种产品图片后的特定场景里, 有着极为强大的实用性。from spire.doc import * from spire.doc.common import * inputFile Sample.docx outputFile ReplaceWithImage.docx # 创建文档对象 document Document() # 从磁盘加载 Word 文件 document.LoadFromFile(inputFile) # 创建图片对象 image DocPicture(document) image.LoadImage(logo.png) # 查找所有 [LOGO] 占位符 textSelections document.FindAllString([LOGO], False, False) # 将每个匹配位置替换为图片 for selection in textSelections: range selection.GetAsOneRange() # 清除原文本 range.Text # 在原文本位置插入图片 range.ChildObjects.Add(image.Clone()) # 保存文档 document.SaveToFile(outputFile, FileFormat.Docx) document.Close()这种方式常用于模板文档处理在文档中放置占位符如 、然后通过代码批量替换为实际图片。批量处理多个文档于实际工作内, 时常会要对目录当中的多个Word文件去执行相同的查找替换之操作, 借由的文件遍历本事, 能够达成高效的批量处置。import os from spire.doc import * from spire.doc.common import * input_dir ./documents output_dir ./processed os.makedirs(output_dir, exist_okTrue) # 遍历目录中的所有 .docx 文件 for filename in os.listdir(input_dir): if filename.endswith(.docx): input_path os.path.join(input_dir, filename) output_path os.path.join(output_dir, filename) document Document() document.LoadFromFile(input_path) # 执行替换操作 document.Replace(旧公司名称, 新公司名称, False, True) document.SaveToFile(output_path, FileFormat.Docx) document.Close() print(f已处理: {filename})这段代码, 于指定目录之内, 对所有的.docx 文件展开遍历之举, 随后针对每一份文档, 去执行相同的文本替换之操作, 并且把最终所获结果, 保存至输出目录之中。如此这般的模式, 于企业进行更名之时, 于术语达成统一之际, 于模板实施更新等诸多场景里面, 是极为实用的。实用技巧使用替换回调进行精细控制要是处于那种需要更为复杂逻辑的替换状况之下, 便能在进行替换之前, 去核查匹配内容的上下文情况, 进而决定是不是要执行替换这么个操作。# 先查找所有匹配项 textSelections document.FindAllString(Python, False, True) # 根据上下文决定是否替换 for selection in textSelections: range selection.GetAsOneRange() # 仅在段落样式为标题时替换 if range.OwnerParagraph.StyleName.startswith(Heading): range.Text Python Programming处理替换后的格式保留换文本之际, 原本的字符样式字体、颜色、尺寸诸等默认会留存, 倘若有同时更改样式之需求, 能够于替换之后再度进行设置。textSelections document.FindAllString(old term, False, True) for selection in textSelections: range selection.GetAsOneRange() range.Text new term range.CharacterFormat.Bold True range.CharacterFormat.TextColor Color.get_Blue()总结关于如何在Word文档里查找以及替换文本, 本文介绍了好些方法, 有基础文本替换的办法, 有正则表达式匹配替换的方式, 有查找后进行高亮显示的做法, 有替换为图片的举措, 还有批量文件处理的操作, 这些操作涵盖了从简单文本修改到复杂模式匹配的主要情形。核心 API 围绕着两个方法展开, 一个方法旨在支持普通字符串与正则表达式两款匹配样式之际, 予以直接替换 另一方法则是用于定位匹配地方, 借由格式设定达成高亮印记等成效。当掌握了这些基础操作以后, 能够进一步结合其文件处的能力, 构建出高效的文档批量处理工作溪流。

相关新闻

CPU散片与盒装全解析:价格、保修、选购策略与避坑指南

CPU散片与盒装全解析:价格、保修、选购策略与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 17:37:35 阅读更多 →
联想M7450/M7400/M7650一体机固件升级实战:从误报换粉到刷机恢复全攻略

联想M7450/M7400/M7650一体机固件升级实战:从误报换粉到刷机恢复全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 17:36:34 阅读更多 →
FRDM-KEXX驱动库从解压到实战:EOCD报错、编译踩坑与BSP改造指南

FRDM-KEXX驱动库从解压到实战:EOCD报错、编译踩坑与BSP改造指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 17:36:34 阅读更多 →

最新新闻

SHT30温湿度传感器与STM32F4的I2C驱动开发:从原理到工程实践

SHT30温湿度传感器与STM32F4的I2C驱动开发:从原理到工程实践

简介:基于STM32F407与SHT30温湿度传感器的工程代码,面向物联网设备、环境监控、智能家居等场景的开发者,尤其适合刚接触模拟IIC通信的单片机爱好者。包内共3个文件,保留SHT30驱动C源文件、头文件,以及配套PDF说明文档&…

2026/9/3 19:56:17 阅读更多 →
用 Python + PySide6 构建桌面 AI 助手:从界面到打包实战

用 Python + PySide6 构建桌面 AI 助手:从界面到打包实战

做桌面 AI 助手这件事,听起来像是给 AI 套了个壳。真正用 Python PySide6 动手做完一个能用的 DSCode Assistant 之后,我才意识到,这套项目真正值得学的不是“套壳”,而是把一个网络请求放进桌面应用里需要解决的一连串工程问题&…

2026/9/3 19:56:17 阅读更多 →
PySide6桌面AI助手开发:界面、线程与大模型API实战解析

PySide6桌面AI助手开发:界面、线程与大模型API实战解析

前几天在做一个内部工具时,需要给团队搭一个能对话的桌面端 AI 助手。Web 页面虽然方便,但每次要开浏览器、维护前端路由,在局域网和离线场景下反而显得笨重。后来改用 PySide6 直接写桌面客户端,体验和 QQ、微信聊天窗口一样自然…

2026/9/3 19:56:17 阅读更多 →
2026 AI 智能体开始自己动手:Computer Use 实战,MonkeyCode 云端给 Agent 一台真实浏览器

2026 AI 智能体开始自己动手:Computer Use 实战,MonkeyCode 云端给 Agent 一台真实浏览器

一、先讲一个"手点废了"的故事 老李带一个 12 人的电商运营团队。每天早上,组员要在四个后台系统里来回切换:先去 ERP 导昨天的订单,再去投放后台把数据抄进日报,最后去财务系统核一遍账。一套流程点下来,人…

2026/9/3 19:56:17 阅读更多 →
塔防地图编辑器入门:从零制作可玩塔防地图全流程

塔防地图编辑器入门:从零制作可玩塔防地图全流程

很多玩家第一次打开塔防战争重制版的编辑器时,都会经历同一个心理过程:看到精美地图,先觉得很兴奋;打开编辑器之后,满屏的工具栏、单位列表和属性面板扑面而来,只剩下一脸茫然。如果只当玩家在别人做好的地…

2026/9/3 19:56:17 阅读更多 →
作业批改系统开发实战:从OCR识别到人机协同的完整架构

作业批改系统开发实战:从OCR识别到人机协同的完整架构

简介:这是一份基于网页的作业批改系统源码,围绕学生、教师、管理员三类角色,实现在线作文上传、教师批改、点卡充值、个人信息管理及后台统一管理等核心功能,适合作为网络编程方向的课程设计或毕业设计参考项目。压缩包为rar格式&…

2026/9/3 19:55:16 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →