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

你可能感兴趣的:(脚本代码专栏,#,代码编程专栏,word,python,c#)