剥离和格式化坐标对

Strip and format coordinate pairs

我有一个坐标数组 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)

嗯,看起来您有一个包含一个项目的列表,而该项目是列表的列表。有点奇怪但还可以。第一步是提取列表的列表,很简单,只需将索引设为零即可。然后我要做的是让每个内部列表成为一个字符串(而不是像上面那样将整个列表都转换为字符串)并在大列表上使用 join,如下所示:

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

编辑:意识到上面的答案会导致每一对都有括号,我想你不想要的。只需删除第一个和最后一个字符即可轻松修复:

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

由于外括号在你的问题中似乎并不重要,我通过test[0]将其删除,下面的代码应该可以满足你的要求。

result = [str(coor).strip('[]') for coor in test[0]]
result = " | ".join(result)