word内容使用python替换

拥有一个固定的word文件,类似模板

比如写一个测试计划,大多数内容都是通用,只需要改改软件名称,人员等等,数量多起来的情况下就可以使用代码

# 导入 Document 类,用于处理 Word 文档
from docx import Document
# 导入 re 模块,用于进行正则表达式操作
import re# 定义一个函数,用于替换 Word 文档中 {{}} 包裹的参数
def replace_parameters_in_docx(file_path, parameters):# 打开指定路径的 Word 文档doc = Document(file_path)# 开始替换段落中的参数# 遍历文档中的每一个段落for paragraph in doc.paragraphs:# 遍历段落中的每一个运行对象(文本块)for run in paragraph.runs:# 获取当前运行对象的文本内容text = run.text# 遍历参数字典,其中 param 是参数名,value 是参数值for param, value in parameters.items():# 编译正则表达式,用于匹配 {{param}} 格式的字符串pattern = re.compile(rf'{{{{{param}}}}}')# 使用正则表达式将匹配到的参数替换为对应的值text = pattern.sub(str(value), text)# 将替换后的文本重新赋值给当前运行对象run.text = text# 开始替换页眉中的参数# 遍历文档的每一个节(文档可能包含多个节)for section in doc.sections:# 遍历当前节的页眉中的每一个段落for header in section.header.paragraphs:# 遍历页眉段落中的每一个运行对象for run in header.runs:# 获取当前运行对象的文本内容text = run.text# 遍历参数字典,进行参数替换for param, value in parameters.items():# 编译正则表达式,用于匹配 {{param}} 格式的字符串pattern = re.compile(rf'{{{{{param}}}}}')# 使用正则表达式将匹配到的参数替换为对应的值text = pattern.sub(str(value), text)# 将替换后的文本重新赋值给当前运行对象run.text = text# 开始替换页脚中的参数# 遍历文档的每一个节for section in doc.sections:# 遍历当前节的页脚中的每一个段落for footer in section.footer.paragraphs:# 遍历页脚段落中的每一个运行对象for run in footer.runs:# 获取当前运行对象的文本内容text = run.text# 遍历参数字典,进行参数替换for param, value in parameters.items():# 编译正则表达式,用于匹配 {{param}} 格式的字符串pattern = re.compile(rf'{{{{{param}}}}}')# 使用正则表达式将匹配到的参数替换为对应的值text = pattern.sub(str(value), text)# 将替换后的文本重新赋值给当前运行对象run.text = text# 开始替换表格中的参数# 遍历文档中的每一个表格for table in doc.tables:# 遍历表格中的每一行for row in table.rows:# 遍历行中的每一个单元格for cell in row.cells:# 遍历单元格中的每一个段落for paragraph in cell.paragraphs:# 遍历段落中的每一个运行对象for run in paragraph.runs:# 获取当前运行对象的文本内容text = run.text# 遍历参数字典,进行参数替换for param, value in parameters.items():# 编译正则表达式,用于匹配 {{param}} 格式的字符串pattern = re.compile(rf'{{{{{param}}}}}')# 使用正则表达式将匹配到的参数替换为对应的值text = pattern.sub(str(value), text)# 将替换后的文本重新赋值给当前运行对象run.text = text# 保存修改后的文档# 定义输出文件的名称output_file = 'output.docx'# 将修改后的文档保存为指定名称的文件doc.save(output_file)# 返回保存后的文件路径return output_file# 程序入口
if __name__ == "__main__":# 定义要处理的 Word 文档的路径file_path = 'your_test_plan.docx'# 定义要替换的参数和对应的值,存储在字典中parameters = {'param1': 'value1','param2': 'value2'}# 调用替换函数,进行参数替换,并获取替换后的文件路径output_file = replace_parameters_in_docx(file_path, parameters)# 打印替换完成的提示信息,包含保存后的文件路径print(f"替换完成,结果保存到 {output_file}")

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

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

相关文章

py语法基础理解

条件判断 只有if-else等我语句,Python不支持switch语句 单if语句 if 条件语句: 条件为真时执行的内容 if-else语句 if 条件语句: 条件为真时执行的内容 else: 条件为假时执行的内容 if-elif语句 else if if 条件语句1: 条件语句1为真时执行的内容 elif 条件语句…

SQL进阶知识:九、高级数据类型

今天介绍下关于高级数据类型的详细介绍,并结合MySQL数据库提供实际例子。 在MySQL中,高级数据类型主要用于处理复杂的数据结构,如JSON、XML和空间数据。这些数据类型提供了更强大的功能,可以满足现代应用程序对数据存储和处理的多…

Linux软硬链接和动静态库(20)

文章目录 前言一、软硬链接基本认知实现原理应用场景取消链接ACM时间 二、动静态库认识库库的作用 三、制作静态库静态库的打包静态库的使用 四、制作动态库动态区的打包动态库的链接与使用动态库的链接原理 总结 前言 我有款非常喜欢玩的游戏,叫做《饥荒》&#xf…

【鸿蒙HarmonyOS】深入理解router与Navigation

5. 路由 1.页面路由(router模式) 1.概述 页面路由指的是在应用程序中实现不同页面之间的跳转,以及数据传递。 我们先明确自定义组件和页面的关系: 自定义组件:Component 装饰的UI单元,页面:即应用的UI…

Apache SeaTunnel:新一代开源、高性能数据集成工具

Apache SeaTunnel 是一款开源、分布式、高性能的数据集成工具,可以通过配置快速搭建数据管道,支持实时海量数据同步。 Apache SeaTunnel 专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问题: 数据源多样性&#xff1a…

CF-Hero:自动绕过CDN找真实ip地址

CF-Hero:自动绕过CDN找真实ip地址 CF-Hero 是一个全面的侦察工具,用于发现受 Cloudflare 保护的 Web 应用程序的真实 IP 地址。它通过各种方法执行多源情报收集。目前仅支持Cloudflare的cdn服务查找真实ip,但从原理上来说查找方法都是通用的…

React-组件和props

1、类组件 import React from react; class ClassApp extends React.Component {constructor(props) {super(props);this.state{};}render() {return (<div><h1>这是一个类组件</h1><p>接收父组件传过来的值&#xff1a;{this.props.name}</p>&…

谈谈接口和抽象类有什么区别?

接口&#xff08;interface&#xff09;和抽象类&#xff08;abstract class&#xff09;都是 Java 中常用的“抽象”工具&#xff0c;用来定义类的规范和结构&#xff0c;但它们有一些本质的区别。下面我用一个简单明了的表格 说明来帮你理解&#xff1a; 对比点抽象类&…

使用Nacos 打造微服务配置中心

一、背景介绍 Nacos 作为服务注册中心的使用方式&#xff0c;同时 Nacos 还可以作为服务配置中心&#xff0c;用于集中式维护各个业务微服务的配置资源。 作为服务配置中心的交互流程图如下。 这样设计的目的&#xff0c;有一个明显的好处就是&#xff1a;有利于对各个微服务…

OpenCv高阶(十一)——物体跟踪

文章目录 前言一、OpenCV 中的物体跟踪算法1、均值漂移&#xff08;Mean Shift&#xff09;&#xff1a;2、CamShift&#xff1a;3、KCF&#xff08;Kernelized Correlation Filters&#xff09;&#xff1a;4、MIL&#xff08;Multiple Instance Learning&#xff09;&#xf…

声音分离人声和配乐base,vocals,drums -从头设计数字生命第6课, demucs——仙盟创梦IDE

demucs -n htdemucs --two-stemsvocals 未来之窗.mp3 demucs -n htdemucs --shifts5 之.mp3demucs -n htdemucs --shifts5 -o wlzcoutspl 未来之窗.mp3 伴奏提取人声分离技术具有多方面的重大意义&#xff0c;主要体现在以下几个领域&#xff1a; 音乐创作与制作 创作便利…

使用若依二次开发商城系统-4:商品属性

功能3&#xff1a;商品分类 功能2&#xff1a;商品品牌 功能1&#xff1a;搭建若依运行环境前言 商品属性功能类似若依自带的字典管理&#xff0c;分两步&#xff0c;先设置属性名&#xff0c;再设置对应的属性值。 一.操作步骤 1&#xff09;数据库表product_property和pro…

操作指南:vLLM 部署开源大语言模型(LLM)

vLLM 是一个专为高效部署大语言模型&#xff08;LLM&#xff09;设计的开源推理框架&#xff0c;其核心优势在于显存优化、高吞吐量及云原生支持。 vLLM 部署开源大模型的详细步骤及优化策略&#xff1a; 一、环境准备与安装 安装 vLLM 基础安装&#xff1a;通过 pip 直接安装…

32.768kHz晶振详解:作用、特性及与其他晶振的区别

一、32.768kHz晶振的核心作用 实时时钟&#xff08;RTC&#xff09;驱动&#xff1a; 提供精确的1Hz时钟信号&#xff0c;用于计时功能&#xff08;如电子表、计算机CMOS时钟&#xff09;。 分频公式&#xff1a; 1Hz 32.768kHz / 2^15&#xff08;通过15级二分频实现&#x…

第3讲、大模型如何理解和表示单词:词嵌入向量原理详解

1. 引言 大型语言模型&#xff08;Large Language Models&#xff0c;简称LLM&#xff09;如GPT-4、Claude和LLaMA等近年来取得了突破性进展&#xff0c;能够生成流畅自然的文本、回答复杂问题、甚至编写代码。但这些模型究竟是如何理解人类语言的&#xff1f;它们如何表示和处…

【Java面试笔记:进阶】19.Java并发包提供了哪些并发工具类?

Java 并发包(java.util.concurrent)提供了一系列强大的工具类,用于简化多线程编程、提升并发性能并确保线程安全。 1. Java 并发包的核心内容 并发包概述:java.util.concurrent 包及其子包提供了丰富的并发工具类,用于简化多线程编程。主要组成部分: 高级同步结构:如 C…

Matlab数字信号处理——小波阈值法去噪分析系统

&#x1f527; 系统简介 本系统通过 MATLAB GUI 图形界面&#xff0c;集成了 小波阈值去噪算法 的各个核心模块&#xff0c;可以实现以下功能&#xff1a; 打开语音文件&#xff1a;支持常见音频格式读取&#xff1b; 模拟加噪&#xff1a;系统内置白噪声模拟功能&#xff0…

EDI 如何与 ERP,CRM,WMS等系统集成

在数字化浪潮下&#xff0c;与制造供应链相关产业正加速向智能化供应链转型。传统人工处理订单、库存和物流的方式已难以满足下单客户对响应速度和数据准确性的严苛要求。EDI技术作为企业间数据交换的核心枢纽&#xff0c;其与ERP、CRM、WMS等业务系统的深度集成&#xff0c;成…

计算机组成原理-408考点-数的表示

常见题型&#xff1a;C语言中的有符号数和无符号数的表示。 【例】有如下C语言程序段: short si-32767&#xff1b;unsigned short usisi&#xff1b;执行上述两条语句后&#xff0c;usi的值为___。short和unsigned short均使用16位二进制数表示。 【分析】考点&#xff1a;同…

企业级AI开发利器:Spring AI框架深度解析与实战

企业级AI开发利器&#xff1a;Spring AI框架深度解析与实战 一、前言&#xff1a;Java生态的AI新纪元 在人工智能技术爆发式发展的今天&#xff0c;Java开发者面临着一个新的挑战&#xff1a;如何将大语言模型&#xff08;LLMs&#xff09;和生成式AI&#xff08;GenAI&#…