Python世界:自动化办公Word之批量替换文本生成副本

ops/2024/10/30 14:33:54/

Python世界:自动化办公Word之批量替换文本生成副本

    • 任务背景
    • 编码思路
    • 代码实现
    • 相关参考

任务背景

为提高办公效率,用python试手了一个word任务,要求如下:

给你一个基础word文档A,格式为docx,名字为:A.docx。A文档中有表格和文字,要求是将里面的字符串"完成绘画"分别替换成完成制作款式x复习制作款式x,输出相应副本,命名为对应序号增序文档,如:1、A.docx, 2、A.docx

要求是输出1000份这样的增序文档。

编码思路

从问题中可提炼以下实现思路:

  • 初始化,输入目标目录、文件命名格式、待替换源字符串、目标字符串
  • 支持文档段落和表格内容查找,支持文本替换
  • 文本增序和命名增序处理

效果预览:

在这里插入图片描述

在这里插入图片描述

代码实现

文件名:doc_copy_replace.py

代码如下:

python"># -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 29 22:20:16 2024
@author: 来知晓
"""word">from docx word">import Documentword">def read_ducment(old, new, document):# 遍历文档word">for paragraph word">in document.paragraphs:word">for run word">in paragraph.runs:#替换功能word">if old word">in run.text:run.text=run.text.replace(old,new)# 遍历表格word">for table word">in document.tables:word">for row word">in table.rows:word">for cell word">in row.cells:#遍历表格段落内容,回到上个步骤,将cell当作paragraph处理word">for paragraph word">in cell.paragraphs:word">for run word">in paragraph.runs:#替换功能word">if old word">in cell.text:run.text=run.text.replace(old,new)# doc_path = r'D:\iocode\来知晓\tmp\A.docx'
# doc_new_path = r'D:\iocode\来知晓\tmp\new.docx'
# str_src = '完成绘画'
# str_tar_odd = '完成制作款式'
# str_tar_even = '复习制作款式'# # 单样例测试
# document = Document(doc_path)
# read_ducment(str_src, str_tar, document)
# document.save(doc_new_path)# 正式demo
cnt = 1000
doc_new_dir = r'D:\iocode\来知晓\tmp'
doc_path_origin = r'D:\iocode\来知晓\tmp\A.docx'
str_src = '完成绘画'
str_tar_odd = '完成制作款式'
str_tar_even = '复习制作款式'cnt_d2 = cnt // 2
str_split = '\\'word">for i word">in range(cnt_d2):k = i + 1str_file_name = r'、A.docx'doc_new_path_odd = doc_new_dir  + str_split + str(2*k-1) + str_file_namestr_tar_odd_conca = str_tar_odd + str(k)document_odd = Document(doc_path_origin)read_ducment(str_src, str_tar_odd_conca, document_odd)document_odd.save(doc_new_path_odd)doc_new_path_even = doc_new_dir + str_split + str(2*k) + str_file_namestr_tar_even_conca = str_tar_even + str(k)document_even = Document(doc_path_origin)read_ducment(str_src, str_tar_even_conca, document_even)document_even.save(doc_new_path_even)

相关参考

  1. python-docx替换文档段落及表格table指定内容,不改变格式方法
  2. Python 如何使用python-docx替换Word文档中的文本并保存

http://www.ppmy.cn/ops/129604.html

相关文章

LeetCode HOT100系列题解之课程表(9/100)

一、题目 课程表. - 力扣(LeetCode) 二、题目解析 想要学习课程Bi,那么就要学习课程Ai,一个前后关系,比较好表示前后关系的就是建图。如果在学A课之前要学B课,学B课之前又要学A课,那么…

python--pyQt 单选按钮控件 -QRadioButton

控件用来创建单选按钮,允许在一组选项中选择其中一个选项。 用法 text() 获取按钮文本 setText() 设置按钮文本 setCheckable() 设置按钮被选中,设置为True则选中,设置为False则取消选中 isChecked() 获取按钮是否被选中,选中返回…

51单片机快速入门之 串行通信 2024/10/21

51单片机快速入门之 串行通信 并行通信: 好处:传输快 适合短距离通信弊端:占用大量io 接线形式为8对8 串行通信 异步通信: 数据一帧一帧传送,传输完一帧之后,可继续或者等待(等待时为高电平) 其帧细分为(图片来源) 起始位:数据帧开始,一定为 0 外部设备只有接受到 0 之后…

力扣-最小覆盖子串

76. 最小覆盖子串 - 力扣(LeetCode) 给定一个字符串s,和目标字符串t,需要找出s中包含t中所有字符且长度最小子串,输出这个子串 滑动窗口,初始时左右指针都指向s的第一个字符,对于每个遍历到的窗口,判断当…

结合无监督表示学习与伪标签监督的自蒸馏方法,用于稀有疾病影像表型分类的分散感知失衡校正|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 Hybrid unsupervised representation learning and pseudo-label supervisedself-distillation for rare disease imaging phenotype classification with dispersion-aware imbalance correction 结合无监督表示学习与伪标签监督的自蒸馏方法,用于稀…

UML外卖系统报告(包含具体需求分析)

1 系统背景 随着互联网技术的快速发展,外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制,而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来,…

SpringBoot 下的Excel文件损坏与内容乱码问题

序言 随着打包部署的方式的改变,原本正常运行的代码可能带来一些新的问题,比如我们现在使用SpringBoot 的方式生成Jar包直接运行,就会对我们再在Resource下的Excel文件产生影响,导入与预期不符的情况发生cuiyaonan2000163.com 比…

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 发布日期:2024 年 10 月 28 日 Xcode 16.1 包含适用于 iOS 18.1、iPadOS 18.1、Apple tvOS 18.1、watchOS 11.1、macOS Sequoia 15.1 和 visionOS 2.1 的 SDK。Xco…