更改内部零件或标签内的文本
Change inner parts or the text inside a tag
我想将 second_part
或 third_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)?
您必须更新 <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>
我想将 second_part
或 third_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)?
您必须更新 <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>