如何在python中写入.csv文件之前清理.gpx数据

时间:2014-10-03 08:10:57

标签: python-2.7 csv gpx

我正在尝试从.gpx文件中提取特定数据。 所需的数据是&t; trkpt'和' ele',这是位置和海拔数据。 下面列出的代码几乎完全符合我的要求,但看起来很麻烦,我只需要数值数据。

gpx_list = []
gpx = open('G:\\14022705.gpx', 'r')  
for line in gpx:
    info = line.split(',')
    if 'trkpt ' in line:
        gpx_list.append(info)
        print line
    if 'ele' in line:
        gpx_list.append(info)
        print line

gpx_list_out = open('G:\\Position_Data2.csv', 'w')  
for line in gpx_list:
    gpx_list_out.write(line[0])

gpx_list_out.close()

输出示例:

['<trkpt lat="-42.6150634" lon="+147.4397831">']
['<ele>1.431</ele>']

相反,我希望它看起来像: -42.6150634, +147.4397831, 1.431全部在一行

任何有关实现这一目标的提示都将受到赞赏。我已经尝试了几个小时搞乱添加不同的代码,但未能达到预期的结果!

1 个答案:

答案 0 :(得分:1)

尝试将此功能合并到您的代码中。正则表达式提取每行中的所有数字

import re

gpx_list = []
gpx = open('G:\\14022705.gpx', 'r')      
gpx_list_out = open('G:\\Position_Data2.csv', 'w') 

for line in gpx:
    if 'trkpt ' in line:
      print re.findall(r"[-+]?\d*\.\d+|\d+",line)
      numerical_value=re.findall(r"[-+]?\d*\.\d+|\d+",line)
      gpx_list_out.write(",".join(numerical_value))

gpx_list_out.close()