Python で urllib2 と sre を使用して aprs.fi からのデータを解析しているので、作業中のリアルタイムの高高度気球コードで気象データを使用できます。解析コードは非常に単純です。
import urllib2
import sre
APRStracking = urllib2.urlopen( "http://api.aprs.fi/api/get?name=KD8REX&what=loc&apikey=42457.M4AFa3hdkXG31&format=xml" )
APRSxml = APRStracking.read()
latitude = sre.findall( '<la.*>(.*)</la.*>', APRSxml )
print latitude
解析しようとしているデータは、次のような XML です。
<xml>
<command>get</command>
<result>ok</result>
<what>loc</what>
<found>1</found>
<entries>
<entry>
<name>KD8REX</name>
<type>l</type>
<time>1339339410</time>
<lasttime>1339339410</lasttime>
<lat>41.95550</lat>
<lng>-83.65567</lng>
<altitude>2204.62</altitude>
<course>15</course>
<speed>15</speed>
<symbol>/O</symbol>
<srccall>KD8REX</srccall>
<dstcall>APT311</dstcall>
<status>UofM H.A.S. - Go Blue!</status>
<status_lasttime>1339339600</status_lasttime>
<path>WIDE1-1,WIDE3-3,qAR,W8SGZ</path>
</entry>
</entries>
</xml>
私は Python にあまり詳しくありませんが、ser.findall() については、APRSxml を調べて正規表現に一致する文字列を検索し、リスト "latitude" の括弧内にあるものを追加するということを理解しています。したがって、この例では、正規表現に一致する 2 つの値は「lasttime」と「lat」です。ただし、このコードを実行すると、<lat>
値ではなく値のみが出力されます<lasttime>
。率直に言って、コードが機能するために本当に必要なのはこれだけですが、好奇心から、期待どおりに動作しない理由を誰かに教えていただければ幸いです。ありがとう。