You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从随机文本字符串中提取经纬度坐标至数组?

提取文本中经纬度坐标的最优实现方法

核心思路

用正则表达式精准匹配经纬度的结构是最高效的方案——不用纠结文本的随机分隔符,直接定位符合格式的坐标对,一步到位。

正则匹配规则

经纬度的匹配要覆盖这些特征:

  • 纬度范围在 -90.0 到 90.0 之间,经度在 -180.0 到 180.0 之间
  • 坐标对以「数字+逗号(可选带空格)+数字」的形式出现
  • 支持整数、浮点数,以及负号开头的负数

如果只需要匹配格式(不严格校验数值范围),可以用简化版正则:

-?\d{1,2}\.\d+,\s?-?\d{1,3}\.\d+

要是需要严格校验数值范围(避免比如91.123, 190.456这种无效坐标),用更严谨的版本:

-?(?:90(?:\.0+)?|[1-8]?\d(?:\.\d+)?),\s?-?(?:180(?:\.0+)?|1[0-7]\d(?:\.\d+)?|\d{1,2}(?:\.\d+)?)

代码示例(Python)

import re

# 示例文本
raw_text = "Bla bla bla 35.45672,-162.91938 yadda yadda yadda -6.53197, 132.07407 bla bla"
# 用严谨版正则匹配
pattern = r'-?(?:90(?:\.0+)?|[1-8]?\d(?:\.\d+)?),\s?-?(?:180(?:\.0+)?|1[0-7]\d(?:\.\d+)?|\d{1,2}(?:\.\d+)?)'

# 提取所有匹配的坐标字符串
coordinate_strings = re.findall(pattern, raw_text)
# 转换为二维数组(拆分纬度、经度为浮点数)
coordinate_array = [tuple(map(float, coord.replace(' ', '').split(','))) for coord in coordinate_strings]

print(coordinate_array)
# 输出:[(35.45672, -162.91938), (-6.53197, 132.07407)]

方案优势

  • 适配任意文本格式:不用预判文本的分隔符,直接匹配坐标结构,不管文本里有什么乱码内容都能准确提取
  • 高效:正则表达式一次遍历完成所有匹配,时间复杂度为O(n),处理长文本也不会卡顿
  • 灵活:可以根据需求调整正则规则,比如适配整数坐标、更多小数位的高精度坐标等

内容的提问来源于stack exchange,提问作者Rick Groenewegen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:54:28