我正在使用 Python ElementTree模块来操作 HTML。我想强调某些词,我目前的解决方案是:
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 中遗漏了一些东西!