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

docxtpl中代码与模板的&符号丢失/被替换为空白问题求助

解决docxtpl生成Word文档时&符号丢失的问题

问题原因

docxtpl基于Jinja2模板引擎,而docx格式本质是XML文件集合。XML中&是特殊字符,用于定义实体引用(如&代表&),不管是Python传入的字符串还是Word模板里的&,都会被XML解析器或Jinja2的自动转义机制处理,导致显示空白或丢失。

解决方案

1. 处理Python代码中传入的带&的字符串

有两种可行方法:

  • 方法一:手动转义&为XML实体&
    修改传入的字符串,把&替换成&,XML解析时会自动还原为&:
    from docxtpl import DocxTemplate
    
    adjective = "results & data-driven"  # 转义&为&
    
    doc = DocxTemplate("Resume_Template.docx")
    context = {'job_title': adjective}
    doc.render(context)
    doc.save("generated_resume.docx")
    
  • 方法二:使用Jinja2的safe过滤器关闭自动转义
    在Word模板的变量位置,把{{ job_title }}改成{{ job_title|safe }},Jinja2就不会转义字符串里的特殊字符,XML解析时能正确识别&。Python代码保持原样即可:
    from docxtpl import DocxTemplate
    
    adjective = "results & data-driven"
    
    doc = DocxTemplate("Resume_Template.docx")
    context = {'job_title': adjective}
    doc.render(context)
    doc.save("generated_resume.docx")
    

2. 处理Word模板中原有的静态&(如“FP&A Manager”)

  • 正常在Word里编辑模板时直接输入&即可,Word会自动将其保存为XML中的&;
  • 如果仍出现丢失问题,可手动修改docx文件:将后缀改为zip,解压后找到word/document.xml文件,把里面的&替换成&,重新打包为docx格式。

验证

按上述方法修改后,生成的Word文档中,无论是传入的还是模板原有的&都能正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:03