2015-01-26 57 views
1

如果在列表[1]我有兩個字符串,包含兩個XML標籤:合併標籤(從字符串列表)一起

<example> this is cool</example> 

<example> this is cooler! </example> 

我怎麼能合併兩個標籤到一個單一的一個,所以它看起來是這樣的:

<example> this is cool this is cooler! </example> 

所以,當我做印刷(名單[1])我得到:

<example> this is cool this is cooler! </example> 
+0

所以,你有兩個字符串列表? – brandizzi 2015-01-26 19:54:05

+0

@brandizzi我有一個元素的列表,裏面的元素有一個單一的字符串「這很酷這是更酷!」 – Jorge 2015-01-26 19:55:25

+3

如果你說你有「標籤」,我問什麼樣的標籤? BeautifulSoup? ElementTree的? minidom命名?你使用的是什麼xml/html分析器? – 2015-01-26 19:56:06

回答

1

我們必須找到標籤名稱和兩個XML元素的文本。要做到這一點,最好的辦法是解析的元素。

所以,你有這樣一個列表,對嗎?

>>> l = ['<example>this is cool</example>', '<example>this is cooler</example>'] 

首先,讓我們解析它(在這種情況下,與lxml):

>>> import lxml.etree 
>>> elements = [lxml.etree.fromstring(s) for s in l] 

現在我們有兩個元素的列表。從這些元素中,我們可以把他們的標籤名稱...

>>> elements[0].tag 
'example' 

...及其文本內容:

>>> elements[0].text 
'this is cool' 
>>> elements[1].text 
'this is cooler' 

好了,我們可以創建一個新的解析相同標籤的元作爲第一個:

>>> new_element = new_element = lxml.etree.Element(elements[0].tag) 

現在,我們這個新元素的文本設置爲前兩者的串聯:

>>> new_element.text = elements[0].text + elements[1].text 

現在,我們得到的字符串表示從元素對象:

>>> lxml.etree.tostring(new_element) 
b'<example>this is coolthis is cooler</example>' 
+0

我有用一個簡單的元素列表:「這是很酷的‘與’這是冷卻器‘都是列表[1]有可能是名單內的任何數量的’」標籤的[1] – Jorge 2015-01-26 20:06:31

+1

嗯...燦您是否看到如何修改下面的代碼以適應您的情況? – brandizzi 2015-01-26 20:07:54

+0

不是當可以有任何數量的標籤 – Jorge 2015-01-26 20:08:29