У меня есть массив координат test, который я хотел бы преобразовать в формат строки

print(test)
[[[-122.45939656328747, 37.796690447896445], [-122.45859061899071, 37.785810199890264], [-122.44198816647757, 37.786535549757346], [-122.43578239539256, 37.789920515803715], [-122.42828711343275, 37.77444638530603]]]

Ожидаемый результат

 "-122.45939656328747, 37.796690447896445 | 122.45859061899071, 37.785810199890264 | -122.44198816647757, 37.786535549757346 | -122.43578239539256, 37.789920515803715 | 
-122.42828711343275, 37.77444638530603"

Следующий код удаляет только внешние скобки, как можно удалить внутренние скобки и поместить трубу ("|") между парами координат, используя python?

import re
print(str(test).strip('[]'))

test = re.sub('[[]]', '', test)
0
the_darkside 8 Окт 2018 в 05:51

2 ответа

Лучший ответ

Поскольку внешние скобки в вашем вопросе кажутся неважными, я убираю их с помощью test[0], следующий код должен дать то, что вы хотите.

result = [str(coor).strip('[]') for coor in test[0]]
result = " | ".join(result)
2
LtChang 8 Окт 2018 в 03:06

Ну, похоже, у вас есть список, который содержит один элемент, и этот элемент является списком списков. Немного странно, но хорошо. Первым шагом было бы извлечь список списков, достаточно просто, просто получить нулевой индекс. Тогда я хотел бы сделать каждый из этих внутренних списков строкой (вместо приведения всего этого к строке, как вы делали выше) и использовать объединение в большом списке, например, так:

formatted = ' | '.join([str(pair) for pair in test[0]])

Редактировать: понял, что приведенный выше ответ приведет к тому, что каждая пара будет заключена в квадратные скобки, что, я думаю, вам не нужно. Легко исправить, просто удалив первый и последний символ:

formatted = ' | '.join([str(pair)[1:-1] for pair in test[0]])
0
Steve Archer 8 Окт 2018 в 03:09