繁体   English   中英

如何将输出文本格式化为文本文件?

[英]How to format the output text to a textfile?

我运行的代码如下所示:

##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个值的位置在哪里?

您可以将dict_values(...)转换为列表,并使用列表理解来访问所需的位置。

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

这样的事情应该起作用:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM