用符号和大写字母拆分 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
本着这个问题的精神:
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