2015-04-03 47 views
-1

我怎樣才能得到數據的字典標籤這樣的:的Python 3 - HTML解析器 - 讓字典從數據

<Currency_name>U.S. dollar</Currency_name> 
<Observation_ISO4217>USD</Observation_ISO4217> 
<Observation_date>2015-03-09</Observation_date> 
<Observation_data>1.2598</Observation_data> 
<Observation_data_reciprocal>0.7938</Observation_data_reciprocal> 

比如我要一本字典一樣{U.D. dollar: [USD, 2015-03-09, 1.2598,0.7938]}

我使用

def handle_starttag(self, tag, attrs): 
    self.dic = {} 
    if tag == 'currency_name': 
     self.dic[currency_name] = handle_data()` 

def handle_data: 
    return data 
+0

所以暫時不考慮'tagname'?只有數據? – itzMEonTV 2015-04-03 06:00:37

+0

嗯,我一般都會從handle_data中獲取數據。一般如何處理handle_data?它一次給我提供每行的所有數據,調用時無法控制。就像我想爲某個標籤名稱調用它,我該怎麼做? – Torched90 2015-04-03 06:05:45

+0

是那些xml? – CY5 2015-04-03 06:13:29

回答

1

然後你可以使用XML PARSER這裏的例子

a='''<?xml version="1.0"?> 
<data> 
<country name="Liechtenstein"> 
    <rank>1</rank> 
    <year>2008</year> 
    <gdppc>141100</gdppc> 
    <neighbor name="Austria" direction="E"/> 
    <neighbor name="Switzerland" direction="W"/> 
</country> 
<country name="Singapore"> 
    <rank>4</rank> 
    <year>2011</year> 
    <gdppc>59900</gdppc> 
    <neighbor name="Malaysia" direction="N"/> 
</country> 
<country name="Panama"> 
    <rank>68</rank> 
    <year>2011</year> 
    <gdppc>13600</gdppc> 
    <neighbor name="Costa Rica" direction="W"/> 
    <neighbor name="Colombia" direction="E"/> 
</country> 
</data>''' 

import xml.etree.ElementTree as ET 
root=ET.fromstring(a) 
#to parse from file use ET.parse('country_data.xml') 

b={} 
for child in root: 
    b.update({child[0].text:[child[i].text for i in range(1,len(child)-2)]}) 
    b[child[0].text].extend(value for neighbor in child.iter('neighbor') for k,value in neighbor.items()) 

OUTPUT

B = { '4':[ '2011', 'N', '馬來西亞'], '68':[ '2011',「13600 ','W','哥斯達黎加','E','哥倫比亞','1':['2008','141100','E','奧地利','W','瑞士']}

+0

這不是我想要做的。 – Torched90 2015-04-03 06:19:31

+0

你應該在你的問題中提到你不想使用XML Parser。我們沒有任何代碼寫作服務 – CY5 2015-04-03 06:36:45

+0

是的,我可以給出一個完整的答案之前OP停止我的評論「那不是我想做的事情」和有人給我downvote所以我覺得它更好離開off.I我只是更新我的回答舉例 – CY5 2015-04-03 17:03:35