You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何使用python-docx替换Word文档页眉页脚中的占位符文本

使用python-docx修改Word页眉页脚中的占位符

完全可以通过python-docx工具修改Word文档页眉、页脚里的文本,包括替换预先设置的{{PLACEHOLDER_TEXT}}占位符。以下是具体实现方法:

核心思路

Word文档的页眉和页脚内容存储在对应节(Section)的headerfooter对象中,每个页眉/页脚包含若干段落(Paragraph),我们只需遍历这些段落,定位到占位符并替换即可。如果占位符带有格式,建议遍历段落中的run对象进行替换,避免丢失原有格式。

代码示例

基础替换(无格式要求)

from docx import Document

def replace_placeholder_in_headers_footers(doc_path, placeholder, new_text):
    doc = Document(doc_path)
    # 遍历所有文档节
    for section in doc.sections:
        # 处理页眉
        for paragraph in section.header.paragraphs:
            if placeholder in paragraph.text:
                paragraph.text = paragraph.text.replace(placeholder, new_text)
        # 处理页脚
        for paragraph in section.footer.paragraphs:
            if placeholder in paragraph.text:
                paragraph.text = paragraph.text.replace(placeholder, new_text)
    # 保存修改后的文档
    doc.save("modified_" + doc_path)

# 调用示例
replace_placeholder_in_headers_footers("original.docx", "{{PLACEHOLDER_TEXT}}", "替换后的实际文本")

保留格式的替换(针对带格式的占位符)

如果占位符所在文本有字体、颜色等格式,直接替换段落文本会丢失格式,此时需要遍历段落中的run对象:

from docx import Document

def replace_placeholder_with_format(doc_path, placeholder, new_text):
    doc = Document(doc_path)
    def replace_in_runs(container):
        for paragraph in container.paragraphs:
            for run in paragraph.runs:
                if placeholder in run.text:
                    run.text = run.text.replace(placeholder, new_text)
    # 处理所有节的页眉和页脚
    for section in doc.sections:
        replace_in_runs(section.header)
        replace_in_runs(section.footer)
    doc.save("modified_with_format_" + doc_path)

# 调用示例
replace_placeholder_with_format("original.docx", "{{PLACEHOLDER_TEXT}}", "带格式保留的替换文本")

注意事项

  • 如果文档包含多个节(Section),务必遍历所有节的页眉和页脚,因为不同节的页眉页脚可能独立设置。
  • 若占位符存在于表格、文本框等特殊容器中,需要额外遍历对应容器内的段落或run对象。

内容的提问来源于stack exchange,提问作者John Wilmer Dela Cerna

火山引擎 最新活动