Как добавить извлеченный HTML в Yattag? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать html через yattag.Единственная проблема - файл заголовка, который я использую из другого html-файла, поэтому я читаю этот файл и пытаюсь вставить его в качестве заголовка.Здесь проблема.Хотя я передаю неэкранированную строку html, yattag избегает ее.То есть он преобразует '<' в <code>&lt; при добавлении в строку html.

MWE:

from yattag import Doc, indent
import html 
doc, tag, text = Doc().tagtext()


h = open(nbheader_template, 'r')
h_content= h.read()
h_content = html.unescape(h_content)

doc.asis('<!DOCTYPE html>')
with tag('html'):

    # insert dummy head
    with tag('head'):
        text(h_content)  # just some dummy text to replace later - workaround for now

    with tag('body'):
        # insert as many divs as no of files
        for i in range(counter):
            with tag('div', id = 'divID_'+ str(1)):
                text('Div Page: ' + str(i))

result = indent(doc.getvalue())



# inject raw head - dirty workaround as yattag not doing it
# result = result.replace('<head>headtext</head>',h_content)

with open('test.html', "w") as file:
    file.write(result)

Выход:
enter image description here

Контекст: Я пытаюсь объединить несколько ноутбуков с jupyter Python в один HTML, поэтому тяжелый заголовок.Содержимое заголовка (nbheader_template) можно найти здесь

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Если вы хотите предотвратить экранирование, вы должны использовать doc.asis вместо text.

Методы asis добавляют строку в документ без какой-либо формы экранирования.

См. Также документацию .

0 голосов
/ 04 декабря 2018

Я не совсем свободно владею 'yattag', но мне не хватает одной вещи:

 with tag('body'):

Код, который вы цитировали (выше), помещает <div> и текст в ваш заголовокгде оно явно не принадлежит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...