我正在使用docxtpl模块使用我拥有的数据生成一些文档。我的数据以字典列表的形式存储。我已经为此编写了一个for循环,但是在每次迭代中,我的for循环都会使用第一个字典的信息生成一个docx文档!你知道我该怎么解决这个问题吗?
我在这里留下一个样例Python代码,以便更好地概述这个问题!
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非常简单:
Hello my name is {{ name }}我想生成3个不同的word文档,分别命名为John、Amin和Carl。
发布于 2021-11-16 10:09:07
你的for循环有点混乱。并且变量list是受保护的,因此您应该重命名该列表:
list_of_names = [{'name': 'John'}, {'name': 'Amin'}, {'name': 'Carl'}]相反,我会循环遍历列表本身,并直接从列表中访问值。
for item in list_of_names:
doc.render(item)
doc.save(f"test{item['name']}.docx")我不确定,但您可能需要在每次迭代时打开模板文档。在这种情况下,代码应该如下所示:
for item in list_of_names:
doc = DocxTemplate('Hello.docx')
doc.render(item)
doc.save(f"test{item['name']}.docx")请让我知道它是否如预期的那样工作:)
https://stackoverflow.com/questions/69987020
复制相似问题