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

使用docxtpl填充Word模板遇Jinja2语法错误:expected token 'end of print statement' got 'Size'

解决docxtpl使用中Jinja2的TemplateSyntaxError问题

错误根源分析

expected token 'end of print statement' got 'Size'这个报错是Word模板文件中的Jinja2语法错误,和你的Python代码关联极小(代码存在小问题但不是报错核心原因)。Jinja2解析模板时,在本该结束打印语句的位置识别到了Size字符,说明模板里存在不符合语法规范的变量标记,常见场景包括:

  • 变量名包含空格,比如错误写成{{ Product Size }}(正确写法应为{{ product_size }}/{{ productSize }},且需和上下文字典的键名对应)
  • Jinja2标记未正确闭合,或标记内混入了多余字符
  • Word自带的隐藏格式(如智能引号、特殊换行符)干扰了Jinja2的解析逻辑

代码小问题修正

你的Python代码存在中文引号的语法错误,先修正为:

import jinja2
from docxtpl import DocxTemplate
from jinja2 import Template

# 替换为你的实际模板路径,使用英文引号
doc = DocxTemplate("path/to/your/template.docx")

# 上下文字典使用英文双引号
context = {"name": "ABCD"}

doc.render(context)

# 保存路径同样使用英文引号
doc.save("populated_template.docx")

模板文件排查与修复

  1. 检查所有Jinja2标记:打开Word模板,全局搜索{{和}},逐一验证:
    • 确保变量名无空格、特殊字符,标记前后无多余符号
    • 确认每个{{都有对应的}},无遗漏或错位
  2. 清除格式干扰:将模板内容复制到纯文本编辑器(如Notepad++)中检查,排除Word隐藏格式的影响后再复制回模板
  3. 分段定位错误:若模板内容较多,可逐步删除部分内容测试,快速定位到出错的具体段落或标记

额外兼容排查

  • 确保docxtpl与Jinja2版本兼容,可尝试安装稳定组合:
    pip install docxtpl==0.16.0 jinja2==3.1.2
    
  • 不要手动修改Word的底层XML结构,仅在可视化界面编辑Jinja2标记即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:50:40