Mas o menos habia pensado algo asi pero, esta mal por que mal interprete la metodo replace, yo pense que te los cambiaba de lugar pero dps me entero de que busca el primer valor que das y lo remplaza por el 2do que pones...
if len(texto) % 2 == 0:
par = True
else:
par = False
if par == True:
mitad = len(texto)//2
else:
mitad = len(texto)//2 + 1
for a in range(mitad):
num = len(texto) - 1 - a
texto = texto.replace(texto[a], texto[num])