2011-08-29 97 views
3

HTML標籤的文本,我有一些lxml元素:替換在LXML文本元素

>> lxml_element.text 
    'hello BREAK world' 

我需要一個HTML標籤休息— <br />替換的單詞BREAK。我試圖做簡單的文本替換:

lxml_element.text.replace('BREAK', '<br />') 

但它插入帶有轉義符號的標籤,如&lt;br/&gt;。我該如何解決這個問題?

回答

4

下面介紹如何做到這一點。從你的問題建立一個樣品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>' 
2

嗯,我不要」您認爲您只想更改元素的文本節點。我認爲你想要做的是修改Elementtext節點,並將名稱爲brSubElement添加到您的lxml_element,然後將子元素的tail屬性設置爲要解析的字符串的第二部分。我在這裏找到了這個教程:http://lxml.de/tutorial.html#the-element-class非常有用。