Reputation: 109
I am trying to extract specific data from a .gpx file. The data required is 'trkpt' and 'ele', which is location and elevation data. My code listed below does pretty much what I need it to do, but it looks messy, and I only need the numerical data.
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()
Output Example:
['<trkpt lat="-42.6150634" lon="+147.4397831">']
['<ele>1.431</ele>']
Instead I would like it to look like:
-42.6150634, +147.4397831, 1.431
all on one line
Any tips on achieving this would be appreciated. I have tried for hours messing around with adding different bits of code but have failed to achieve desired outcome!
Upvotes: 0
Views: 644
Reputation: 29337
Try to incorporate this into your code. The regular expression extracts all digits in each line
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()
Upvotes: 1