我有一個像XML樹:如何將XML轉換成列表
<abc>
<cd>text1</cd>
<cd>text2</cd>
<ef>text3</ef>
<ef>text4</ef>
</abc>
現在我想將它保存爲像元組的列表:[(text1,text3),(text2,text4)]
。
我該怎麼做?
我有一個像XML樹:如何將XML轉換成列表
<abc>
<cd>text1</cd>
<cd>text2</cd>
<ef>text3</ef>
<ef>text4</ef>
</abc>
現在我想將它保存爲像元組的列表:[(text1,text3),(text2,text4)]
。
我該怎麼做?
import xml.etree.cElementTree as ET
# import lxml.etree as ET # also works
content = '''\
<abc>
<cd>text1</cd>
<cd>text2</cd>
<ef>text3</ef>
<ef>text4</ef>
</abc>'''
doc = ET.fromstring(content)
texts = (x.text for x in doc)
print(zip(*zip(*[texts]*2)))
產生
[('text1', 'text3'), ('text2', 'text4')]
說明:
你已經知道如何解析XML到像這樣的列表:
In [8]: [x.text for x in doc]
Out[8]: ['text1', 'text2', 'text3', 'text4']
組項目由2 ,使用grouper recipe,zip(*[iter]*2)
:
In [11]: zip(*[texts]*2)
Out[11]: [('text1', 'text2'), ('text3', 'text4')]
現在你可以再次使用zip包組的第一個項目從每一個元組,那麼第二個項目,等:
In [14]: zip(*zip(*[texts]*2))
Out[14]: [('text1', 'text3'), ('text2', 'text4')]
你只是試圖解析信息了XML的?如果是這樣,不同的方法可能會更好。有Python可用的XML解析庫,比如BeautifulSoup – Peter 2012-01-13 11:09:43
我已經嘗試過使用lxml庫,但是iam能夠將它保存爲'[text1,text2,text3,text4]' – 2012-01-13 11:12:17
作爲字符串讀取,然後按鍵組合,應該沒問題。 – 2012-01-13 11:18:26