我在 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 查找与正则表达式匹配的任何字符串,然后将括号之间的内容附加到列表“纬度”中。所以,在这个例子中,匹配正则表达式的两个值是“lasttime”和“lat”。但是,当我运行此代码时,它只输出<lat>
值,而不是<lasttime>
. 坦率地说,这就是我真正需要的代码才能工作,但出于好奇,如果有人能告诉我为什么它没有按预期运行,我将不胜感激。谢谢。