当前位置: 首页 > news >正文

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}")

相关文章:

  • 【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的
  • 连锁美业管理系统「数据分析」的重要左右分析︳博弈美业系统疗愈系统分享
  • 自动创建 中国古代故事人物一致性图画,看看扣子的空间是否能达到你的满意,自媒体的福音?
  • PCB规则
  • Python爬虫实战:获取xie程网敦煌景点数据,为51旅游路线做参考
  • Linux网络编程 从集线器到交换机的网络通信全流程——基于Packet Tracer的深度实验
  • Docker安装ES :确保 Kibana 正确连接 Elasticsearch
  • Unity中使用Cinemachine插件创建自由视角相机(freelookCamera)来实现第三人称漫游
  • WSL2-Ubuntu22.04下拉取Docker MongoDB镜像并启动
  • STM32F407 的通用定时器与串口配置深度解析
  • Linux系统学习----概述与目录结构
  • 阿里巴巴安全工程师面试题:BAS
  • k8s 证书相关问题
  • 如何避免多任务并行导致的效率下降
  • c++下的onnx推理
  • axios 在请求拦截器中设置Content-Type无效问题
  • Ubuntu20.04下GraspNet复现流程中的问题
  • MACD红绿灯副图指标使用技巧,绿灯做多,MACD趋势线,周期共振等实战技术解密
  • JavaScript性能优化实战(3):内存管理与泄漏防范
  • Vue3-原始值的响应式方案ref
  • 一夜跌去200美元,黄金巨震冲上热搜!涨势已近尾声?
  • 看正背面月壤、听火星上的声音,记者探营“中国航天日”科普展
  • 金湘军辞去山西省省长职务
  • 长征十梦舟揽月稳步推进
  • 董明珠连任格力电器董事,回应管理层年轻化
  • 受贿超8.22亿,新疆维吾尔自治区党委原副书记李鹏新一审被判死缓