用符号和大写字母拆分 Python 正则表达式

Split in Python regex with symbol and uppercase letter

本着这个问题的精神:我想将格式为 18-23-34W 的经度转换为十进制,即 -18.392778。我想用减号、- 和大写分隔。

link里面的功能我一直在尝试,适合我的需要:

def dms2dd(s):
    degrees, minutes, seconds, direction = re.split('[A-Z-]+', s)
    dd = float(degrees) + float(minutes) / 60 + float(seconds) / (60 * 60)
    if direction in ('S', 'W'):
        dd *= -1
    return dd

问题似乎与 degrees, minutes, seconds, direction = re.split('[A-Z-]+', s) 中的正则表达式有关。我获得了转换,但没有乘以 -1,因为它应该是。谢谢

你的 seconds 会给你 '34' - 因为你 "remove" W: 永远不会保留拆分字符。

潜在修复:

import re

def dms2dd(s):
    degrees, minutes, seconds, *_ = re.split('[A-Z-]+', s)
    direction = s[-1]

    dd = float(degrees) + float(minutes)/60 + float(seconds)/(60*60)
    if direction in ('S','W'):
        dd*= -1
    return dd


print(dms2dd("18-23-34W"))  # -18.392777777777777  - add a round(_,6) to get yours