使用';更换';Python中的函数

使用';更换';Python中的函数,python,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 + "\"" 90-12-28.15 我想将其重新格式化如下: my_str = "90-12

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

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 + "\""
90-12-28.15

我想将其重新格式化如下:

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 + "\""
90°12'28.15“

基本上,将破折号替换为度、分和秒字符,度和分之间留有空格,分和秒之间留有空格

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

感谢您的帮助


Mike

您可能希望使用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

我会把你的第一根弦分开:

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

str = '90-12-28.15'

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

print str2

虽然正则表达式和
split()
都是很好的解决方案,但使用
replace()
来实现这一点相当容易

lat = "90-12-28.15"

lat = lat.replace("-", "° ", 1)
lat = lat.replace("-", "' ", 1)
lat = lat + '"'
或者您可以在一行中完成所有操作:

lat = lat.replace("-", "° ", 1).replace("-", "' ", 1) + '"'
python的“replace”字符串方法应该易于使用

在您的情况下,您可以这样做:

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 + "\""

酷,我不知道你能这么做。你提供的链接没有我能找到的替换方法的信息。实际信息在页面顶部的
String Methods
链接中。