我有一些lxml
元素:
>> lxml_element.text
'hello BREAK world'
我需要用HTML换行标签<br />
替换单词BREAK
。我尝试过简单的文本替换:
lxml_element.text.replace('BREAK', '<br />')
但它插入的标签带有转义符,比如
<br/>
。我该如何解决这个问题?以下是如何操作。根据你的问题,设置一个示例lxml:
>>> import lxml
>>> some_data = "<b>hello BREAK world</b>"
>>> root = lxml.etree.fromstring(some_data)
>>> root
<Element b at 0x3f35a50>
>>> root.text
'hello BREAK world'
>>> childbr = lxml.etree.SubElement(root, "br")
>>> childbr
<Element br at 0x3f35b40>
>>> lxml.etree.tostring(root)
'<b>hello BREAK world<br/></b>'
但这还不够。你需要将<br>之前的文本放入.text
中:
>>> root.text = "hello"
>>> lxml.etree.tostring(root)
'<b>hello<br/></b>'
然后设置子元素的 .tail
属性包含剩余文本:
>>> childbr.tail = "world"
>>> lxml.etree.tostring(root)
'<b>hello<br/>world</b>'
我认为您不仅仅想要更改元素的文本节点。我认为您想要做的是修改您的Element
文本节点并向您的lxml_element
添加名为br
的SubElement
,然后将子元素的tail
属性设置为解析字符串的第二部分。我发现这里的教程非常有用:http://lxml.de/tutorial.html#the-element-class。