0

所以我有这本词典

mydict = {'name': 'Theo', 'age': '39', 'gender': 'male', 'eyecolor': 'brown'}

我使用 docx-mailmerge 将这些数据合并到一个 word 文档中。

template = "myworddoc.docx"
newdoc = "mergeddoc.docx"
document = MailMerge(template)
document.merge(mydict)
document.write(newdoc)

但是创建的文档是空的。我猜它只适用于kwargs??

我只能使用与 kwargs 的合并吗?

document.merge(name='Theo', age='39', gender='male', eyecolor='brown')

我真的很喜欢使用字典来合并数据。

我是否将 dict 转换为 kwarg(以及如何执行此操作)还是使用 dict?

谢谢你的帮助!!

4

2 回答 2

1

不知道正式名称是什么,但我称它为“爆炸”运算符。

document.merge(**mydict)

这会将 解包dict到函数/方法的关键字参数中。

例子:

def foo_kwargs(a=1, b=2, c=3):
    print(f'a={a} b={b} c={c}')

my_dict = {'a': 100, 'b': 200, 'c': 300}
foo_kwargs(**my_dict)
# Prints a=100 b=200 c=300

请注意,还有 args 爆炸:

mylist = [1,2,3,4]

def foo_args(a, b, c, d):
    print(a, b, c ,d)

foo_args(*mylist)
# Prints 1 2 3 4
于 2018-10-31T21:17:55.213 回答
0

Use the merge_pages method when passing a dict to a Mailmerge object: document.merge_pages([mydict])

# keys = your mergefield names, values = what you want to insert into each mergefield
mydict = {'name': 'Theo', 'age': '39', 'gender': 'male', 'eyecolor': 'brown'}

template = "myworddoc.docx"
newdoc = "mergeddoc.docx"
document = MailMerge(template)

print([i for i in document.get_merge_fields()] # Verify your merge fields exist
document.merge_pages([mydict])
document.write(newdoc)
document.close()
于 2020-05-14T07:34:04.250 回答