我有个朋友正在攻读航空航天工程硕士学位。在他的最后一个项目中,他是一个小团队的成员,负责编写一个跟踪气象气球、火箭和卫星的程序。程序接收来自GPS设备的输入,使用数据进行计算,并使用这些计算结果控制一系列设计用于定向通信天线的电机,因此气球、火箭或卫星始终保持焦点。
虽然我自己有点像(永恒的)初学者,但我比我的朋友有更多的编程经验。所以当他向我征求意见时,我说服他用我选择的语言python编写这个程序。
在项目的这一点上,我们正在研究解析GPS设备输入的代码。下面是一些输入示例,其中包含我们需要用粗体提取的数据:
$gprmc,092204.9994250.5589,S,14718.5084,E,1,12,24.4,89.6,M,,,0000*1F
$gprmc,093345.6794234.7899,N,11344.2567,W,3,02,24.51000.23,M,,,0000*1F
$gprmc,044584.9361276.5539,N,88734.1543,E,2,04,33.5600.323,M,,,*00
$gprmc,199304.9733248.7780,N,11355.7832,W,1,06,02.225722.5,M,,,*00
$gprmc,066487.9544572.0089,S,45572.3345,W,3,09,15.035000.00,M,,,*1F
以下是对数据的进一步解释:
“看来我需要五件东西
各行各业。记住
这些区域中的任何一个
空。意味着只有两个
彼此相邻的逗号。这样
作为“,,,”有两个字段可以
任何时候都要吃饱。只有一些
他们有两到三个选择
可能是,但我不认为我应该是
就靠这一点吧。”
两天前,我的朋友能够从GPS接收器上获取完整的日志,GPS接收器用来跟踪最近的一次气象气球发射。数据很长,所以我把它全部放在了this pastebin中。
我自己对正则表达式还是比较陌生的,所以我正在寻求一些帮助。

最佳答案

分裂应该会起作用。以下是提取数据的好方法:

>>> line = "$GPRMC,199304.973,3248.7780,N,11355.7832,W,1,06,02.2,25722.5,M,,,*00"
>>> line = line.split(",")
>>> neededData = (float(line[2]), line[3], float(line[4]), line[5], float(line[9]))
>>> print neededData
(3248.7779999999998, 'N', 11355.7832, 'W', 25722.5)

10-05 21:44