繁体   English   中英

在Python中的For循环中迭代生成器

[英]Iterating Generators in a For Loop in Python

我正在尝试从国家气象局解析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>

所需的摘要是所有节点,并且仅是“开始有效时间”节点。

这是我到目前为止的代码:

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错误时,这才有意义。 我相信我的问题是由对发电机的误解造成的。

在此先感谢您。

您的代码在这里可以正常工作,只需进行少量导入修改,这可能与我在Ubuntu上运行python 2.7.4有关。

import xml.etree.ElementTree as ET

其余的按原样工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM