为Word文档注入魔法!Python批量替换多个文档的多个关键字,轻松搞定!

news2024/11/22 17:18:35

嘿,各位小伙伴们,大家好!有没有想过,如何在多个Word文档中批量替换多个关键字?不用担心,今天我来教大家一招,用Python轻松搞定这个问题!保证让你分分钟拥有处理文档的超级魔法~✨📄✨

工具准备

开始之前,我们需要一个神奇的工具:pywin32。别闲着,赶紧装上:

pip install pywin32

先梳理一下思路

1.收集所有待处理的文档路径:小主们得准备好一堆需要处理的Word文档。 2.定义关键字替换列表:明确哪些关键字要被替换,以及替换后的内容。 3.遍历所有文档并逐一替换:给这些文档施展魔法,批量替换关键字。

神奇代码来啦!🎉

以下是实现上述功能的完整代码:

import os

from win32com import client


def replace_all_keywords_in_docx(file_path, save_path, keywords):
    word = client.Dispatch("Word.Application")
    word.Visible = False
    doc = word.Documents.Open(file_path)

    for old_text, new_text in keywords.items():
        find_obj = word.Selection.Find
        find_obj.ClearFormatting()
        find_obj.Text = old_text
        find_obj.Replacement.ClearFormatting()
        find_obj.Replacement.Text = new_text
        if find_obj.Execute(Replace=client.constants.wdReplaceAll):
            print(f"Replaced '{old_text}' with '{new_text}'")
    doc.SaveAs(save_path)
    doc.Close()
    word.Quit()


def replace_all_keywords_in_docxs(file_directory, save_directory, keywords):
    if not os.path.exists(save_directory):
        os.makedirs(save_directory)
    for file_name in os.listdir(file_directory):
        if file_name.endswith(".docx"):
            print("正在处理文件:", file_name)
            file_path = os.path.join(file_directory, file_name)
            save_path = os.path.join(save_directory, file_name)
            replace_all_keywords_in_docx(file_path, save_path, keywords)


file_directory = "C:/Users/olive/Desktop/待替换关键字的Word"
save_directory = "C:/Users/olive/Desktop/完成替换关键字的Word"
keywords = {
    "签定": "签订",
    "商品": "产品",
}

replace_all_keywords_in_docxs(file_directory, save_directory, keywords)

代码详解

这段代码首先定义了两个函数:

1.replace_all_keywords_in_docx函数:它使用win32com库中的Word应用程序实例,在给定的Word文档中遍历关键字-替换词典,执行替换操作,并将修改后的文档保存到指定路径。

2.replace_all_keywords_in_docxs函数:它遍历指定目录下的所有Word文档,对每个文档执行关键字替换操作,并将修改后的文档保存到指定的目录。

在代码的主要部分,定义了待处理文件目录、保存文件目录和关键字替换词典,然后调用replace_all_keywords_in_docxs函数来执行批量替换关键字的操作。

激动人心的测试

我们先准备几个Word文档,在这里,我用之前的课程中生成过的合同文档为例:

我们准备了这三个合同文档,我们打开一份文档看一下:

这份文档中,我们发现有几个地方写错了,签定应该要改成签订,同时商品要改成产品。当然,我们可以使用Word软件的查找替换功能,但是当有好多份文档呢,要一份一份文档打开查找替换,同时,如果有多个关键字错了,还要执行多次的查找替换,还容易看漏找错,想想这工作量就恐怖。

现在,我们写的代码要闪亮登场了,一秒搞定。在运行我们的代码之间,记得要先改一下你的文件路径和关键字哦:

file_directory = "C:/Users/olive/Desktop/待替换关键字的Word"
save_directory = "C:/Users/olive/Desktop/完成替换关键字的Word"
keywords = {
    "签定": "签订",
    "商品": "产品",
}

好了,现在可以运行我们的代码了,激动人心的时刻来了,不要着急,我们运行完后,先看一下控制台的输出:

正在处理文件: 食品采购合同_好佳食品有限公司.docx
Replaced '签定' with '签订'
Replaced '商品' with '产品'
正在处理文件: 食品采购合同_美食来食品有限公司.docx
Replaced '签定' with '签订'
Replaced '商品' with '产品'
正在处理文件: 食品采购合同_胡记食品有限公司.docx
Replaced '签定' with '签订'
Replaced '商品' with '产品'

ok,说明每份文档都被执行到了,对应的关键字也被执行替换了,我们随便打开一份文档检验一下吧:

ok,替换成功,大功告成。

结语

小伙伴们,看似复杂的批量替换操作,其实一点儿都不难吧!用上Python这门神器,处理文档简直不要太方便~快去试试,在工作中展示你的魔法技能吧!✨🧙‍♂️🧙‍♀️✨

最后,提供一下本文用到的Word文档,供大家练练手:

链接: https://pan.baidu.com/s/1yEMN-lsHLige_E2uDb3wKw?pwd=iy7k 提取码: iy7k 
--来自百度网盘超级会员v6的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1936992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

arm 内联汇编基础

一、 Arm架构寄存器体系熟悉 基于arm neon 实现的代码有 intrinsic 和inline assembly 两种实现。 1.1 通用寄存器 arm v7 有 16 个 32-bit 通用寄存器,用 r0-r15 表示。 arm v8 有 31 个 64-bit 通用寄存器,用 x0-x30 表示,和 v7 不一样…

AndroidStudio与手机进行无线调试

(一)、前提条件 一部手机一条USB数据线一部电脑手机和电脑连接到同一个 Wifi开启手机的USB调试功能开启手机的无线调试功能 (二)、操作步骤 1、 将手机和电脑用USB数据线连接 2、 打开 终端,输入 adb devices ,查看手机和电脑是否连接成功。如下图: 2、…

Mac电脑硬盘无法读取怎么办 Mac硬盘读取慢会导致电脑卡吗 Paragon NTFS 激活码

Mac电脑作为众多用户的工作与生活伙伴,其稳定性和效率至关重要。然而,当遭遇硬盘无法读取或读取速度缓慢的问题时,这无疑会给用户带来极大的不便,影响日常操作与数据访问。下面我们来看看Mac电脑硬盘无法读取怎么办,Ma…

Kotlin性能:runCatching、try-catch块、无异常处理耗时比较

Kotlin性能&#xff1a;runCatching、try-catch块、无异常处理耗时比较 fun main(args: Array<String>) {val a 1.1fval b 2.2fval n1 System.nanoTime()val m1 System.currentTimeMillis()runCatching {cal(a, b)}val n2 System.nanoTime()val m2 System.currentT…

python中format函数和f-string详解

Python 中的 format() 函数是一种字符串格式化的方法&#xff0c;通过花括号 {} 来定义占位符&#xff0c;并通过 format() 方法中的参数来替换这些占位符。这种方法非常灵活&#xff0c;可以处理多种数据类型&#xff0c;并且可以通过索引、关键字或者属性名来访问对象的属性。…

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.2新一代信息技术及应用-2.2.3大数据与2.2.4区块链

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

实战项目:仿muduo库实现并发服务器

目录 项目初始与项目演示HTTP服务器基础认识Reactor模式基础认识单Reactor单线程模式认识单Reactor多线程模式认识多Reactor多线程模式认识 目标定位总体大模块划分server模块的管理思想Buffer子模块Socket子模块Channel子模块Connection子模块Acceptor子模块TimerQueue子模块P…

记录些Spring+题集(9)

在网络应用开发中&#xff0c;Cookie、Session 和 Token 是常见的用于管理用户状态和身份验证的机制。 Cookie、Session、Token 的区别 这三个概念的产生与 HTTP 是一种无状态协议密切相关。在 HTTP 中&#xff0c;每次客户端与服务器之间进行通信时&#xff0c;服务器无法直…

8月长沙学术会议:经济金融发展国际会议(ICEFD 2024)

经济金融发展国际会议&#xff08;ICEFD 2024&#xff09;将于2024年8月20-22日在长沙盛大举行。本次会议汇聚了国内外众多高校、科研机构、企业界及其他相关领域的专家学者&#xff0c;共同探讨经济金融发展的新趋势、新挑战和新机遇。 长沙&#xff0c;这座历史悠久的文化名…

细说MCU用DMA控制ADC采样和串口传送的实现方法

目录 一、建立工程 1.相同的配置 2.配置ADC 3.配置DMA 二、代码修改 1.定义存储ADC采样结果的数组 2.启动ADC与定时器 3.编写主程序代码 4.重定义回调函数 5.查看结果 三、修改DMA模式 1. 修改DMA模式为Circular 2.查看结果 采用DMA(Direct Memory Access&#xf…

Python爬虫(1) --基础知识

爬虫 爬虫是什么&#xff1f; spider 是一种模仿浏览器上网过程的一种程序&#xff0c;可以获取一些网页的数据 基础知识 URL 统一资源定位符 uniform resource locator http: 超文本传输协议 HyperText Transfer Protocol 默认端口 80 https: 安全的超文本传输协议 security…

docker 部署wechatbot-webhook 并获取接口实现微信群图片自动保存到chevereto图库等

功能如图&#xff1a; docker部署 version: "3" services:excalidraw:image: dannicool/docker-wechatbot-webhook:latestcontainer_name: wechatbot-webhookdeploy:resources:limits:cpus: 0.15memory: 500Mreservations:cpus: 0.05memory: 80Mrestart: alwayspor…

数据结构_Map和Set

目录 一、搜索模型 二、Map 2.1 Map.Entry 2.2 Map 方法 2.3 Map 注意事项 三、Set 3.1 Set 方法 3.2 Set 注意事项 四、哈希表 4.1 哈希表 4.2 冲突 4.3 哈希函数设计 4.4 闭散列 4.5 开散列/哈希桶 总结 【搜索树】 二叉搜索树又称二叉排序树&#xff0c;它或…

P4-AI产品经理-九五小庞

从0开始做AI产品的完整工作方法 项目启动 项目实施 样本测试模型推荐引擎 构建DMP&#xff08;数据管理平台&#xff09; 项目上线

Intel和AMD用户再等等!微软确认Win11 24H2年底前登陆

微软近日确认&#xff0c;Windows 11 24H2版本将于2024年底前正式登陆使用英特尔和AMD处理器的PC。 根据微软介绍&#xff0c;Windows 11 24H2将作为传统功能更新&#xff0c;将在今年晚些时候提供给所有设备。 此前&#xff0c;微软已向搭载骁龙X Plus和X Elite系列处理器的Co…

2024年计算机软考中级【硬件工程师】面试题目汇总(附答案)

硬件工程师面试题汇总分析 1、解释一下同步电路和异步电路 解题思路 同步电路和异步电路是指同步时序电路和异步时序电路。由于存储电路中触发器的动作特点不同&#xff0c;因此可以把时序电路分为同步时序电路和异步时序电路两种。同步时序电路所有的触发器状态的变化都是在同…

pytorch学习(七)torchvision.datasets的使用

网络上已经有公开的数据集&#xff0c;并且这些数据集被整合到了torchvision.datasets中&#xff0c;使用自带的函数可以直接下载。 1.数据集 具体有哪些数据可直接用torchvision.datasets加载呢&#xff1f;可以查看这个网址&#xff1a; datasets官网&#xff1a;Datasets…

Windows11+VS2019+Trimesh2 2.16 安装配置记录

Windows11VS2019Trimesh2 2.16 编译配置记录 trimesh2下载在VS进行配置trimesh2 vs2019编译 若无特别说明均在Release x64平台下配置测试 trimesh2下载 TriMesh2官网 的自述文件里说其新版本不能直接使用MSVC编译&#xff0c;但在Github找到一个大佬的仓库&#xff0c;该大佬直…

多口适配器,给您的生活增添便利

随着科技的快速发展&#xff0c;我们的生活已离不开各种各样的电子设备&#xff0c;智能手机、平板电脑、智能手表、无线耳机……它们共同构建了我们丰富多彩的数字生活。然而&#xff0c;面对众多设备的充电需求&#xff0c;传统的单一充电口已难以满足现代人的使用习惯。在这…

安卓系统签名的制作与使用(SignApk.jar)踩坑记录

看到这里的你应该能区分apk签名跟系统签名吧,如果无法区分的请看下面链接 android 应用的证书签名跟系统签名 看过上面的文章应该知道系统签名需要的文件清单大概有哪些 前两个是编译安卓系统时在build目录下,详细目录为 /build/target/product/security 每组签名用途不同&am…