我的代码运行如下:
##Prints the latitude and longitude every second.
import time
import microstacknode.hardware.gps.l80gps
if __name__ == '__main__':
gps = microstacknode.hardware.gps.l80gps.L80GPS()
while True:
data = gps.get_gpgga()
string=str(data.values())
text_file = open("/home/pi/fyp/gps.txt","a")
text_file.write(string + "\n")
time.sleep(1)
这是它的输出:
dict_values(['', '', '', '0', '', 155641.098, '0', 0.0, '$GPGGA', 0.0, '', '', ''])
dict_values(['', '', '', '0', '', 155642.098, '0', 0.0, '$GPGGA', 0.0, '', '', ''])
dict_values(['', '', '', '0', '', 155643.098, '0', 0.0, '$GPGGA', 0.0, '', '', ''])
dict_values(['', '', '', '0', '', 155644.098, '0', 0.0, '$GPGGA', 0.0, '', '', ''])
dict_values(['', '', '', '0', '', 155645.098, '0', 0.0, '$GPGGA', 0.0, '', '', ''])
但是,我只需要一些值。 即,第8个,第10个和第13个值(现在输出为'')。有没有办法过滤掉文本的其余部分,所以我只得到这个输出:
'','',''
'','',''
第8,第10和第13个值的位置是什么?
答案 0 :(得分:1)
您可以将dict_values(...)
转换为列表,并使用列表推导来访问所需的位置。
[list(data.values())[x] for x in [7, 9, 12]] # for 8th, 10th and 13th position
答案 1 :(得分:0)
这样的事情应该有效:
import time
import microstacknode.hardware.gps.l80gps
if __name__ == '__main__':
gps = microstacknode.hardware.gps.l80gps.L80GPS()
while True:
data = gps.get_gpgga()
values = data.values()
string = str(values[7]) + ', ' + str(values[9]) + ', ' + str(values[12])
text_file = open("/home/pi/fyp/gps.txt","a")
text_file.write(string + "\n")
time.sleep(1)