【问题标题】:python parse conditional xml valuepython解析条件xml值
【发布时间】:2012-10-24 01:22:12
【问题描述】:

这是我的 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

【问题讨论】:

    标签: python xml parsing xml-parsing elementtree


    【解决方案1】:

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

    print "Wind Gust: ", meta.findtext('wind_gust_kt', '')
    

    【讨论】:

      【解决方案2】:

      当你遍历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

      在那里的例子中,循环变量的find方法被调用 为了找到循环元素的子元素。在你的情况下, wind_gust 变量是你想要的元素,它没有子元素。

      【讨论】:

        猜你喜欢
        • 2018-09-22
        • 1970-01-01
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        相关资源
        最近更新 更多