更改标签的内部部分或文本

时间:2019-06-30 19:40:29

标签: python xml elementtree

我想将second_partthird_part替换为bar

parser = etree.XMLParser(remove_comments=True, remove_blank_text=True)
root = etree.fromstring("<p>first_part<lb/>second_part<lb/>third_part</p>", parser=parser)

我们可以轻松获取和更改first_part:

p.text
# returns 'first_part'

我们还可以使用标签检索尾部文本:

''.join(ET.tostring(e, 'unicode') for e in root)
# returns '<lb />second_part<lb />third_part'

但是我想更改文本。我该怎么做(不使用正则表达式,仅使用XMLParser)?

1 个答案:

答案 0 :(得分:1)

您必须更新<lb>元素的tail属性。

from lxml import etree

root = etree.fromstring("<p>first_part<lb/>second_part<lb/>third_part</p>")

lb_elements = root.findall("lb")
lb_elements[0].tail = "foo"
lb_elements[1].tail = "bar"

print(etree.tostring(root, encoding="unicode"))

输出:

<p>first_part<lb/>foo<lb/>bar</p>