Как сделать вывод списка из функции в docx через docxtpl?

В продолжение темы.

Есть словарь:

dataorg = {'ДопВидДеят': [
    {'Код': '10.11', 'Текст': 'Переработка и консервирование мяса', 'Дата': '2017-06-29'},
    {'Код': '10.12', 'Текст': 'Производство и консервирование мяса птицы', 'Дата': '2017-06-29'},
    {'Код': '10.13.3', 'Текст': 'Производство мясных (мясосодержащих) консервов', 'Дата': '2017-06-29'}
]}
from docxtpl import DocxTemplate
file1 = DocxTemplate("file1.docx")
def okve():
    for i in range (0, len(dataorg['ДопВидДеят'])):
        ok = '- ' + dataorg['ДопВидДеят'][i]['Текст'] + ';'
        yield ok
    
con1 = {
        'okved' : "\n".join(okve());
       }
file1.render(con1)
file1.save('file.docx')

в file1.docx поставлен тег {{ okved }}

Вывод в Python через print показывает всё отлично:

 - Переработка и консервирование мяса; 
 - Производство и консервирование мяса птицы;
 - Производство мясных (мясосодержащих) консервов;

А вот вывод в файле docx даёт список без переводов на новую строку:

- Переработка и консервирование мяса; - Производство и консервирование мяса птицы; - Производство мясных (мясосодержащих) консервов;

Экспериментировал в подстановку строки "\n".join(okve()); вместо "\n" различные варианты: \r, символы юникода, скрытые символы Word, функцию RichText() из docxtpl, не помогло.

Ищу дополнительные варианты решения вопроса.


PS Метка docxtpl не ставится.


Ответы (1 шт):

Автор решения: MaxU

Из документации:

The RichText() or R() offers newline, new paragraph, and page break features : just use \n, \a, or \f in the text, they will be converted accordingly.

...

context = { 'var':R('my text') } and {{r <var> }} in the template (note the r)

Т.е. в file1.docx должно быть {{r okved }} и в коде:

from docxtpl import DocxTemplate, R

con1 = {'okved' : R("\n".join(okve()))}
→ Ссылка