我正在尝试解析National Weather Service中的XML;打印每小时的温度,一个空白区域,以及每小时温度的相关时间。
打印温度只需要一个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>
所需的片段只是“start-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
运行“python [程序名称] .py”产生
TypeError: 'generator' object has no attribute '__getitem__'
当上面的参考文献1和2错误时,这是有意义的。我相信我的问题是由对发电机的误解引起的。
提前谢谢你。
答案 0 :(得分:1)
你的代码在这里工作正常,稍加导入修改可能与我在Ubuntu上运行python 2.7.4有关。
import xml.etree.ElementTree as ET
其余的工作原理。