2

我有一个以度分秒为单位的坐标值的访问表,它们的格式如下:

90-12-28.15

我想像这样重新格式化它:

90° 12' 28.15"

本质上用度分和秒字符替换破折号,度和分之间有一个空格,分和秒之间有另一个空格。

我正在考虑使用“替换”功能,但我不确定如何用度数字符 (°) 和空格替换破折号的第一个实例,然后检测破折号的第二个实例并放置分钟字符和一个空格,然后最后在末尾添加秒字符。

任何帮助表示赞赏。

麦克风

4

4 回答 4

5

虽然正则表达式和split()是很好的解决方案,但这样做replace()相当容易。

lat = "90-12-28.15"

lat = lat.replace("-", "° ", 1)
lat = lat.replace("-", "' ", 1)
lat = lat + '"'

或者您可以在一行上完成所有操作:

lat = lat.replace("-", "° ", 1).replace("-", "' ", 1) + '"'
于 2012-08-01T22:49:27.887 回答
2

我只想拆分你的第一个字符串:

# -*- coding: utf-8 -*-

str = '90-12-28.15'

arr = str.split('-')   
str2 = arr[0] +'° ' + arr[1] + '\'' +arr[2] +'"'

print str2
于 2012-08-01T22:44:40.873 回答
1

您可能想要使用 Python 的正则表达式模块re,尤其是re.sub(). 在此处查看 Python 文档以获取更多信息。

如果您不熟悉正则表达式,请在此处查看本教程,同样来自 Python 文档。

import re

text = 'replace "-" in 90-12-28.15'
print(re.sub(r'(\d\d)-(\d\d)-(\d\d)\.(\d\d)', r'''\1° \2' \3.\4"''', text))
# use \d{1,2} instead of \d\d if single digits are allowed
于 2012-08-01T22:40:15.450 回答
0

python“替换”字符串方法应该很容易使用。您可以在此处找到文档。

在您的情况下,您可以执行以下操作:

my_str = "90-12-28.15"
my_str = my_str.replace("-","°",1)# 1 means you are going to replace the first ocurrence only
my_str = my_str.replace("-","'",1)
my_str = my_str + "\""
于 2012-08-01T22:50:50.727 回答