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

そこの例でfindは、ループ要素の子要素を見つけるために、ループ変数のメソッドが呼び出されます。あなたの場合、wind_gust変数は必要な要素であり、子要素はありません。

于 2012-10-24T01:57:07.297 に答える