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

如何解析含多种分隔符的经纬度字符串并转换为浮点型?

解决经纬度字符串转浮点型数值的问题

你的问题出在正则表达式\d+只能匹配连续整数,无法识别浮点数里的小数点。下面提供两种可行的解决方案:

方法一:使用匹配浮点数的正则表达式

修改正则规则,让它能识别包含小数点的数值,同时支持可选的负号(适配南纬/西经的负数场景):

import re

# 测试所有格式的输入
test_cases = [
    '28.111,77.222',
    '28.111, 77.222',
    '28.111 77.222',
    '28.111   77.222',
    '-28.111, 77.222',
    '28,77.222'
]

for test in test_cases:
    # 匹配浮点数:支持正负号、整数/小数形式
    coords = re.findall(r'-?\d+(?:\.\d+)?', test)
    if len(coords) >= 2:
        lat = float(coords[0])
        lon = float(coords[1])
        print(f"输入: {test} → 纬度: {lat}, 经度: {lon}")
    else:
        print(f"输入: {test} → 格式错误,无法提取有效经纬度")

正则表达式-?\d+(?:\.\d+)?的含义:

  • -?:匹配可选的负号
  • \d+:匹配至少1位整数部分
  • (?:\.\d+)?:非捕获组,匹配可选的「小数点+至少1位小数」,?表示该部分可省略(支持纯整数的经纬度)

方法二:统一分隔符后分割字符串

如果输入格式比较规范(只有逗号、空格作为分隔符),可以先把逗号替换成空格,再用split()自动处理多空格,最后分割转换:

test = '28.111, 77.222'
# 把逗号换成空格,再合并多空格为单空格后分割
cleaned = ' '.join(test.replace(',', ' ').split())
lat_str, lon_str = cleaned.split()
lat = float(lat_str)
lon = float(lon_str)

print(f"纬度: {lat}, 经度: {lon}")

这种方法逻辑更直观,适合格式固定的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:07:23