Python: печать подэлементов в списке в CSV - PullRequest
0 голосов
/ 11 июня 2018

У меня есть список координат GPS.Ниже приведен формат этих координат.Это маршрут 0, если хотите, и он представляет места, которые посетил водитель.Он начинается с ('24,957055', '-8,740156'), идет к ('34 .956915136264 ',' -10.753690062122 ') и возвращается к ('24 .957055', '-8.740156').

[[('24.957055', ' -8.740156'),
('34.956915136264', ' -10.753690062122'),
('24.957055', ' -8.740156')],...]

Я хочу создать структуру данных, в которой каждая из координат будет классифицирована на основе того, являются ли они начальной точкой, конечной точкой или просто промежуточной точкой.

Примечание: началоточка, конечная точка = то же самое, т. е. драйвер всегда возвращается к базе.

Требуемый вывод для маршрута 0:

Start, way_point_1, End
('24.957055', ' -8.740156'), ('34.956915136264', ' -10.753690062122'), ('24.957055', ' -8.740156')

Список координат, который у меня есть, намного длиннее, и я хочу бытьвозможность просматривать весь список и определять, является ли координата начальной, конечной или промежуточной точкой.

Редактировать: Некоторые из этих маршрутов будут иметь более 1 промежуточной точки

1 Ответ

0 голосов
/ 11 июня 2018

Должно быть достаточно просто, если я понимаю ваш вопрос.Давайте предположим, что этот список:

route0 = [[('24.957055', ' -8.740156'),
('34.956915136264', ' -10.753690062122'),
('36.956915136264', ' -6.753690062122'),
('66.956915136264', ' -12.753690062122'),
('24.957055', ' -8.740156')], [('48.957055', ' -16.740156'),
('68.956915136264', ' -20.753690062122'),
('48.957055', ' -16.740156')]]

все, что вам нужно, это простой цикл for:

for i in range(len(route0)):
    print(f'List Element: {i}\nstart: {route0[i][0]}\nEnd: {route0[i][-1]}\nIntermediary: {route0[i][1:-1]}\n')

Вывод:

List Element: 0
start: ('24.957055', ' -8.740156')
End: ('24.957055', ' -8.740156')
Intermediary: [('34.956915136264', ' -10.753690062122'), ('36.956915136264', ' -6.753690062122'), ('66.956915136264', ' -12.753690062122')]

List Element: 1
start: ('48.957055', ' -16.740156')
End: ('48.957055', ' -16.740156')
Intermediary: [('68.956915136264', ' -20.753690062122')]

Не важно, что вы хотите сделатьобщая идея та же:

route0[0][0] # looks at the first list and takes the first element
route0[0][-1] # looks at the first list and takes the last element
route0[0][1:-1] # looks at the first list and takes all the middle elements

Для CSV с использованием панды:

data = []

for i in range(len(route0)):
    s = route0[i][0]
    m = str(route0[i][1:-1]).replace('[','').replace(']','')
    e = route0[i][-1]
    data.append([s,m,e])

df = pd.DataFrame(data, columns=['Start', 'Intermediary', 'End'])
df.to_csv('file_name.csv')

для CSV с использованием CSV:

import csv

data = []

for i in range(len(route0)):
    s = route0[i][0]
    m = str(route0[i][1:-1]).replace('[','').replace(']','') #route0[i][1:-1]
    e = route0[i][-1]
    data.append([s,m,e])

with open('test.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    headers = ['Start', 'Intermediary', 'End']
    writer.writerow(headers)
    writer.writerows(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...