2014-06-30 53 views
0

我試圖解析來自National Weather Service的XML;打印小時溫度,空白空間以及該小時溫度的相關時間。在Python for循環中迭代生成器

打印溫度只需要一個for循環。問題是在循環和打印每個溫度時編制正確的時間標記。/data/time-layout中的示例子代碼如下所示:

<layout-key>k-p1h-n1-0</layout-key> 
<start-valid-time>2014-06-30T13:00:00-05:00</start-valid-time> 
<end-valid-time>2014-06-30T14:00:00-05:00</end-valid-time> 
<start-valid-time>2014-06-30T14:00:00-05:00</start-valid-time> 
<end-valid-time>2014-06-30T15:00:00-05:00</end-valid-time> 

所需的片段都是且僅有「啓動有效時間」節點。

下面是代碼我迄今爲止:

import elementtree.ElementTree as ET 
import urllib2 

url = "http://forecast.weather.gov/MapClick.php?lat=36.06000&lon=-94.16000&FcstType=digitalDWML" 
tree = ET.parse(urllib2.urlopen(url)) 
forecast = tree.getroot() 
i = int(0) 

Temperatures = forecast.find("./data/parameters/temperature[@type='hourly']") 

for HourTemperature in Temperatures: 
    TimeStamps = forecast.findall("./data/time-layout/start-valid-time") #Reference 1 
    print HourTemperature.text, " ", TimeStamps[i].text #Reference 2 
    i += 1 

運行「蟒[節目名稱] py」爲產量

TypeError: 'generator' object has no attribute '__getitem__' 

這是合理的時上述線附圖1和2是錯誤。我相信我的問題是由於對發電機的誤解造成的。

提前感謝ya'll。

+2

你確定你的'import'語句正確嗎?據我瞭解,「import elementtree.ElementTree as ET' - 應該是'import xml.etree.ElementTree as ET'。該代碼適用於我,沒有錯誤。 – alecxe

+0

感謝您的評論,alexce。你得到什麼輸出? – sjMoquin

+0

'2014-06-30T14:00:00-05:00'到'2014 2014-07-07T13:00:00-05:00'的多行。 – alecxe

回答

1

你的代碼在這裏可以很好地工作,只需稍作修改就可以在Ubuntu上運行python 2.7.4。

import xml.etree.ElementTree as ET 

其餘的按原樣工作。

+0

那麼,alexce和Mike Mattice,感謝您的調試?我認爲我有一個值得你花時間的更重要的問題。 – sjMoquin