2013-05-08 6 views
5

Ho un programma che stampa alcuni dati con 'p' s al posto di punti decimali, e anche alcune altre informazioni. Stavo cercando di sostituire il 'p' s con '.' s.Python - come sostituire 'p' in un numero (4p5) con '.' (4p5-> 4.5)?

uscita Esempio dal programma:

out_info = 'value is approximately 34p55' 

Vorrei modificarla in:

out_info_updated = 'value is approximately 34.55' 

Ho provato utilizzando re.search per estrarre il numero e sostituire il p con ., ma collegando torna indietro diventa un problema.Non riuscivo a capire quel modello da utilizzare per re.sub che avrebbe fatto il lavoro. Qualcuno può aiutarmi?

risposta

13

Qui si va:

import re 
out_info = "value is approximately 34p55" 
re.sub(r'(\d+)p(\d+)', r'\1.\2', out_info) 

L'output è:

'value is approximately 34.55'

che dice "Se vuoi inserire una o più cifre, seguite da un p, seguito da uno o più cifre, quindi sostituire tutto con la prima serie di cifre, seguito da un ., seguita dalla seconda serie di cifre."

+1

'(\ d) p (\ d)' sarebbe sufficiente ed è molto più veloce (ho appena cronometrato con una stringa costituita di carri allegorici a caso, e l'espressione regolare più semplice è 8 volte più veloce). –

Problemi correlati