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

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: 来知晓
"""

from docx import Document


def read_ducment(old, new, document):
    # 遍历文档
    for paragraph in document.paragraphs:
        for run in paragraph.runs:
            #替换功能
            if old in run.text:
                run.text=run.text.replace(old,new)
 
    # 遍历表格
    for table in document.tables:
        for row in table.rows:
            for cell in row.cells:
                #遍历表格段落内容,回到上个步骤,将cell当作paragraph处理
                for paragraph in cell.paragraphs:
                    for run in paragraph.runs:
                        #替换功能
                        if old 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 = '\\'

for i in range(cnt_d2):
    k = i + 1
    str_file_name = r'、A.docx'
    doc_new_path_odd = doc_new_dir  + str_split + str(2*k-1) + str_file_name
    str_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_name
    str_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文档中的文本并保存
相关推荐
进击的明明11 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent
全栈弄潮儿12 小时前
Python实战第8期:函数
后端·python·编程语言
卷无止境14 小时前
暗流与破局:AI时代的代码安全审查工具全景指南
后端·python
卷无止境16 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
众壹新能源科技18 小时前
逆变器自带无功不够用,加装5MVar SVG后功率因数从0.85回到0.99
运维·人工智能·自动化
滴啦嘟啦哒18 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生18 小时前
AI安全与红队测试
python·ai
费曼学习法18 小时前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿19 小时前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者19 小时前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python