HTML標籤的文本,我有一些lxml
元素:替換在LXML文本元素
>> lxml_element.text
'hello BREAK world'
我需要一個HTML標籤休息— <br />
替換的單詞BREAK
。我試圖做簡單的文本替換:
lxml_element.text.replace('BREAK', '<br />')
但它插入帶有轉義符號的標籤,如<br/>
。我該如何解決這個問題?
HTML標籤的文本,我有一些lxml
元素:替換在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'
接下來,創建一個子元素標籤<BR>:
>>> 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
的text
節點,並將名稱爲br
的SubElement
添加到您的lxml_element
,然後將子元素的tail
屬性設置爲要解析的字符串的第二部分。我在這裏找到了這個教程:http://lxml.de/tutorial.html#the-element-class非常有用。