Как получить словарь Python в документе слиться как Kwargs с Docx-Mailmerge
Итак, у меня есть этот словарь
mydict = {'name': 'Theo', 'age': '39', 'gender': 'male', 'eyecolor': 'brown'}
и я использую docx-mailmerge для объединения этих данных в текстовый документ.
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')
Мне действительно нравится использовать словарь для объединения данных.
Преобразовать ли я диктовку в kwarg (и как мне это сделать) или я использую диктовку?
Спасибо за помощь!
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
Обратите внимание, что здесь также есть аргументы:
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
Использовать merge_pages
при передаче словаря объекту Mailmerge: 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()