usando una expresión regular será más fiable
import re
decmark_reg = re.compile('(?<=\d),(?=\d)')
ss = 'abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3)'
print ss
print decmark_reg.sub('.',ss)
resultado
abc , 2,5 def ,5,88 or (2,5, 8,12, 8945,3)
abc , 2.5 def ,5.88 or (2.5, 8.12, 8945.3)
Si desea tratar los casos más complejos (números con ningún dígito antes de la marca decimal para exemple) la expresión regular Construí para detectar todo tipo de números en el siguiente subproceso puede ser de su interés:
stackoverflow.com/questions/5917082/regular-expression-to-match-numbers-with-or-without-commas-and-decimals-in-text/5929469
¿verificó: http://pypi.python.org/pypi/Babel/0.9.6 – mouad