首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For循环无法在python的docxtpl中生成docx文件

For循环无法在python的docxtpl中生成docx文件
EN

Stack Overflow用户
提问于 2021-11-16 09:57:21
回答 1查看 119关注 0票数 0

我正在使用docxtpl模块使用我拥有的数据生成一些文档。我的数据以字典列表的形式存储。我已经为此编写了一个for循环,但是在每次迭代中,我的for循环都会使用第一个字典的信息生成一个docx文档!你知道我该怎么解决这个问题吗?

我在这里留下一个样例Python代码,以便更好地概述这个问题!

代码语言:javascript
复制
from docxtpl import DocxTemplate
from docx2pdf import convert

doc = DocxTemplate('Hello.docx')

list = [{'name': 'John'}, {'name': 'Amin'}, {'name': 'Carl'}]

for i in range(3):
    doc.render(list[i])
    doc.save('test'+str(i)+'.docx')

我的docx非常简单:

代码语言:javascript
复制
Hello my name is {{ name }}

我想生成3个不同的word文档,分别命名为John、Amin和Carl。

EN

回答 1

Stack Overflow用户

发布于 2021-11-16 10:09:07

你的for循环有点混乱。并且变量list是受保护的,因此您应该重命名该列表:

代码语言:javascript
复制
list_of_names = [{'name': 'John'}, {'name': 'Amin'}, {'name': 'Carl'}]

相反,我会循环遍历列表本身,并直接从列表中访问值。

代码语言:javascript
复制
for item in list_of_names:
    doc.render(item)  
    doc.save(f"test{item['name']}.docx")

我不确定,但您可能需要在每次迭代时打开模板文档。在这种情况下,代码应该如下所示:

代码语言:javascript
复制
for item in list_of_names:
    doc = DocxTemplate('Hello.docx')
    doc.render(item)  
    doc.save(f"test{item['name']}.docx")

请让我知道它是否如预期的那样工作:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69987020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档