Я использую модуль Python ElementTree для управления HTML. Я хочу подчеркнуть некоторые слова, и мое текущее решение:Вставить теги в текст ElementTree
for e in tree.getiterator():
for attr in 'text', 'tail':
words = (getattr(e, attr) or '').split()
change = False
for i, word in enumerate(words):
word = clean_word.sub('', word)
if word.lower() in glossary:
change = True
words[i] = word.replace(word, '<b>' + word + '</b>')
if change:
setattr(e, attr, ' '.join(words))
выше анализирует текст каждого элемента и подчеркивает важные слова, которые он находит. Однако он делает это путем встраивания HTML-тегов в тексте атрибутов, который сбежавший при рендеринге, так что мне нужно противопоставить:
html = etree.tostring(tree).replace('>', '>').replace('<', '<')
Это делает меня неудобным, поэтому я хочу, чтобы сделать это правильно. Однако для встраивания нового элемента мне нужно было бы сдвинуть атрибуты «текст» и «хвост», чтобы выделенный текст появился в том же положении. И это было бы очень сложно при повторении, как описано выше.
Любой совет, как это сделать должным образом, будет оценен по достоинству. Я уверен, что в API есть что-то, чего я пропустил!