You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现DOTM文件中的字符串搜索与替换

DOTM格式文件字符串替换实现方案

可以实现DOTM格式文件的指定字符串替换。
DOTM是带宏的Word模板文件,属于OOXML格式家族,和DOCX底层结构一致,仅多了宏存储的相关部分。你之前用的docx2python仅支持内容读取,替换操作可以用python-docx库完成,只要保存时保留.dotm后缀,原有宏不会丢失。

实现步骤

  • 第一步:安装依赖库
    执行命令:pip install python-docx
  • 第二步:使用如下代码完成替换,默认覆盖正文、表格内容,可按需启用页眉页脚的替换逻辑:
from docx import Document

def replace_dotm_str(source_path, output_path, old_str, new_str):
    doc = Document(source_path)

    # 替换正文字符串
    for para in doc.paragraphs:
        for run in para.runs:
            run.text = run.text.replace(old_str, new_str)

    # 替换表格内字符串
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                for para in cell.paragraphs:
                    for run in para.runs:
                        run.text = run.text.replace(old_str, new_str)

    # 按需启用页眉替换
    # for section in doc.sections:
    #     for para in section.header.paragraphs:
    #         for run in para.runs:
    #             run.text = run.text.replace(old_str, new_str)

    # 按需启用页脚替换
    # for section in doc.sections:
    #     for para in section.footer.paragraphs:
    #         for run in para.runs:
    #             run.text = run.text.replace(old_str, new_str)

    # 保存时必须保留.dotm后缀,避免宏丢失
    doc.save(output_path)

# 调用示例
replace_dotm_str("原文件路径.dotm", "输出文件路径.dotm", "待替换的旧字符串", "替换后的新字符串")

注意事项

  • 上述代码遍历run进行替换是为了尽量保留原文本格式,如果目标字符串被Word拆分到多个连续run中导致匹配失败,且不需要保留原有格式,可以直接修改paragraph.text完成替换。
  • 如果DOTM中包含内容控件、嵌套域等特殊结构,需要额外拓展对应结构的遍历逻辑,常规纯文本场景上述代码可直接使用。
  • 不要将处理后的文件保存为.docx后缀,否则文件内的宏会被自动清除。

内容的提问来源于stack exchange,提问作者Plunkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 07:24:03