0

这是我的 XML 文件:

<METAR>
<wind_dir_degrees>210</wind_dir_degrees>
<wind_speed_kt>14</wind_speed_kt>
<wind_gust_kt>22</wind_gust_kt>
</METAR>

这是我解析风向和风速的脚本。但是,阵风是一个条件值,并不总是出现在我的 xml 文件中。如果它确实存在,我想显示该值,如果不存在则什么都没有。

import xml.etree.ElementTree as ET
from urllib import urlopen

link = urlopen('xml file')

tree = ET.parse(link)
root = tree.getroot()

data = root.findall('data/METAR')
for metar in data:
    print metar.find('wind_dir').text

我尝试过这样的事情,但得到错误

data = root.findall('wind_gust_kt')
for metar in data:
        if metar.find((wind_gust_kt') > 0:
           print "Wind Gust: ", metar.find('wind_gust_kt').text
4

2 回答 2

1

您可以使用findtext默认值'',例如:

print "Wind Gust: ", meta.findtext('wind_gust_kt', '')
于 2012-10-24T01:50:47.290 回答
0

当你遍历findall函数的结果时,不需要find再次调用——你已经有了元素。

您可以将代码简化为如下所示:

tree = ET.parse(link)
for wind_gust in tree.findall('wind_gust_kt'):
    print "Wind gust:", wind_gust.text

您可能一直在关注本教程:

http://docs.python.org/library/xml.etree.elementtree.html#tutorial

In the example there, the find method of the loop variable is called in order to find child elements of the loop element. In your case, the wind_gust variable is the element that you want, and it has no child elements.

于 2012-10-24T01:57:07.297 回答