Как заполнить шаблон слов с помощью Python, используя MailMerge? - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть файл слов с ключом 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'
...