У меня есть файл слов с ключом MergeFields key1, key2, key3 ..... Я хочу предварительно заполнить этот документ word значениями1, values2, values3 .... в каждом MergeField соответственно.Если я выписываю значения явно так, это прекрасно работает
with MailMerge(file_path_with_old_name) as document:
document.merge(
key1 = value1,
key2 = value2,
key3 = value3
....)
document.write(file_path_with_new_name)
, но я хотел бы иметь возможность передавать словарь в MailMerge вместо того, чтобы записывать его.ключи - это слово MergeFields, а значения - это то, что их заменяет, т. е. ключ1 заменяется значением1:
a = { key1:value1, key2:value2, key3:value3.....}
with MailMerge(file_path_with_old_name) as document:
document.merge(a)
document.write(file_path_with_new_name)
Я нашел эти вопросы ( Как получить словарь Python в документеслиться как kwargs с docx-mailmerge ), который, кажется, спрашивает то же самое, что я спрашиваю, они предложили поместить ** перед словарем, но когда я делаю это, я получаю следующую ошибку
File "C:/Python_All/python_scripts/data_gather_2.0.py", line 151, in template_manipulation
document.merge(**all_fields_full) # merges documents note that the ** is critical it unpacks the dictionary
File "C:\Python_All\Anaconda\lib\site-packages\mailmerge.py", line 179, in merge
self.__merge_field(part, field, replacement)
File "C:\Python_All\Anaconda\lib\site-packages\mailmerge.py", line 191, in __merge_field
text_parts = text.replace('\r', '').split('\n')
AttributeError: 'tuple' object has no attribute 'replace'