2012-08-01 8 views
1

J'ai une table d'accès qui a un groupe des valeurs de coordonnées en degrés minutes secondes et ils sont formatés comme ceci:Utilisation de « remplacer » la fonction en Python

90-12-28.15

Je veux reformater comme celle-ci:.

90 ° 12' 28.15"

remplaçant essentiellement les tirets avec les degrés minutes et secondes caractères et un espace entre les degrés et les minutes et un autre entre les minutes et les secondes

Je pense à l'aide de la « Remplacer » fonction, mais je ne suis pas sûr de savoir comment remplacer la première instance du tableau de bord avec un caractère de degré (°) et dans l'espace, puis détecter la deuxième instance du tableau de bord et lieu les caractères minute et un espace, puis finalement ajouter le caractère secondes à la fin.

Toute aide est appréciée.

Mike

Répondre

1

Vous pouvez utiliser le module d'expressions régulières Python re, en particulier re.sub(). Vérifiez la docs Python here pour plus d'informations.

Si vous n'êtes pas familier avec les expressions régulières, consultez ce tutoriel here, également de la documentation 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 
+0

J'ai ajouté exemple de code – jfs

+0

Merci, c'est un bon exemple. – Amit

2

Je voudrais juste diviser votre première chaîne:

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

str = '90-12-28.15' 

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

print str2 
4

Alors que les expressions régulières et split() sont des solutions fines, faire avec replace() est assez facile.

lat = "90-12-28.15" 

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

Ou vous pouvez le faire sur une seule ligne:

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

oh ... viens de répondre même ... – marianobianchi

+0

Cool, je ne savais pas qu'on pouvait le faire. – Michael0x2a

0

Le python "Replace" méthode de chaîne doit être facile à utiliser. Vous trouverez la documentation here.

Dans votre cas, vous pouvez faire quelque chose comme ceci:

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