2016-01-14 174 views
0

我有一個正在運行的代碼看起來像這樣:如何將輸出文本格式化爲文本文件?

##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的值被定位成這樣?

回答

1

您可以將dict_values(...)轉換爲列表並使用列表理解來訪問所需的位置。

[list(data.values())[x] for x in [7, 9, 12]] # for 8th, 10th and 13th position 
+0

甜!我得到它的工作。雖然輸出有「[]」。是否有可能刪除它們,並只有逗號分隔值? – JolyDroneSP

+0

將列表轉換爲字符串並使用連接方法: my_string =「,」.join(my_list)my_list = [list(data.values())[x] for [7,9,12] #如果你不需要它或沒有空間 – maxie

+0

如果你滿意,請接受答案。 – maxie

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)