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

本文章已经生成可运行项目
使用Python替换Word文档中日期可以借助`python-docx`库实现。以下是一个示例代码,该代码可以将Word文档中特定的日期占位符(如`YY`、`MM`、`DD`)替换为当前日期: ```python from docx import Document import re import os import datetime # 打开Word文档 doc = Document('../files/巡检表模板/巡检表.docx') # 获取当前日期的年、月、日 y = datetime.date.today().year m = datetime.date.today().month d = datetime.date.today().day # 创建以日期命名的文件夹 folder_name = "%s.%s" % (m, d) def create_folder(folder): # 创建文件夹,以日期12.1命名 try: os.makedirs("../files/%s" % folder) except FileExistsError: # 报错文件已存在,退出函数 print("文件已经存在!") return # 遍历文档的段落 for par in doc.paragraphs: # 检查段落中是否包含日期占位符 if re.search("YY", par.text) and re.search("MM", par.text) and re.search("DD", par.text): # 遍历段落中的每个运行对象 for run in par.runs: # 替换年份占位符 run.text = re.sub("YY", "%s" % y, run.text) # 替换月份占位符 run.text = re.sub("MM", "%s" % m, run.text) # 替换日期占位符 run.text = re.sub("DD", "%s" % d, run.text) print("已修改:" + par.text) # 创建文件夹 create_folder(folder_name) # 保存修改后的文档到指定文件夹 doc.save("../files/%s/巡检表.docx" % folder_name) ``` 上述代码首先导入必要的库,然后使用`Document`类打开指定的Word文档。接着获取当前日期的年、月、日,并创建一个以日期命名的文件夹。之后,遍历文档的段落,检查是否包含日期占位符,如果包含,则使用`re.sub`函数将占位符替换为实际日期。最后,保存修改后的文档到指定文件夹[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值