import string
"abaababb".translate(string.maketrans("ab", "ba"))
# result: 'babbabaa'
Tenga en cuenta que esto solo funciona para sustituciones de un carácter.
Para subseries más largos o sustituciones, esto es un poco complejo, pero podría funcionar:
import re
def replace_all(repls, str):
# return re.sub('|'.join(repls.keys()), lambda k: repls[k.group(0)], str)
return re.sub('|'.join(re.escape(key) for key in repls.keys()),
lambda k: repls[k.group(0)], str)
text = "i like apples, but pears scare me"
print replace_all({"apple": "pear", "pear": "apple"}, text)
Desafortunadamente esto no funcionará si se incluyen todos los caracteres especiales de expresiones regulares no se pueden utilizar las expresiones regulares de esta manera :(
(Gracias @TimPietzcker)
¿Están todos de acuerdo con el hecho de que cualquier cadena que contenga% temp% se alterará incorrectamente? –
Tiendo a hacer esto con algo ridículo como - - \ _ (descriptor) \ _-. Wordy pero las posibilidades de colisión son * escasas. – wom