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

标签 python for-loop xml-parsing nested generator

我正在尝试从 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>

所需的片段是所有且仅“开始有效时间”节点。

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

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

其余部分按原样工作。

关于python - 在 Python 的 For 循环中迭代生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496475/

相关文章:

python - 你能在 Python 中创建传统的固定长度和类型的数组吗?

python - 从同一网络上的其他设备连接到 Flask 服务器

python - 将 heroku django 应用程序与 ec2 postgres 数据库连接

python - 从字符串python中删除数字

android - 关于 Android 和 XmlParser 的菜鸟问题

python - 设置 PyCharm 远程 conda 解释器

windows - 为什么 for/f 不忽略空行?

c# - 如何修改我的代码 - 如何循环到数据表的第 n 行?

xml - 防止 XSL 1.0 中的 2^n - 1 条件

c - 是否有可能克隆 xmlTextReader(或多遍阅读)?