如何将数组内字符串格式的坐标数组解析为数值类型数组
坐标数组解析方案
问题原因
每个数组元素是合法的JSON数组格式字符串,直接转换为float类型只会提取字符串开头的第一个有效数值,剩余的逗号和第二个数值会被忽略;单独使用replace移除引号没有生效,是因为没有正确拆分字符串内的两个坐标值,也没有将整体字符串转换为数组结构。
实现方法
JavaScript 版本
直接使用JSON.parse解析每个字符串元素即可:
const originalArr = [ "[-33.85812364015231, 151.19984484776273]", "[-33.85812364015231, 151.19984484776273]", "[-33.87137985320215, 151.19263084032974]" ]; const parsedArr = originalArr.map(item => JSON.parse(item));
如需兼容异常格式,可以增加错误处理:
const parsedArr = originalArr.map(item => { try { const res = JSON.parse(item); // 校验坐标格式合法性 return Array.isArray(res) && res.length === 2 ? res : []; } catch (err) { return []; } }).filter(item => item.length);
Python 版本
方法1:使用json库解析(推荐)
import json original_arr = [ "[-33.85812364015231, 151.19984484776273]", "[-33.85812364015231, 151.19984484776273]", "[-33.87137985320215, 151.19263084032974]" ] parsed_arr = [json.loads(item) for item in original_arr]
方法2:手动处理字符串
如果不想引入json库,可以手动拆分转换:
parsed_arr = [] for coord_str in original_arr: # 移除首尾方括号,按逗号拆分两个坐标值 lat_str, lng_str = coord_str.strip("[]").split(",") # 去除空格后转换为float类型 parsed_arr.append([float(lat_str.strip()), float(lng_str.strip())])
内容的提问来源于stack exchange,提问作者user15607380
相关产品推荐
相关产品推荐

