我正在使用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中錯過了一些東西!