с использованием регулярных выражений будет более надежным
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)
результат
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 )
Если вы хотите обработать более сложные случаи (числа без цифры перед десятичной отметкой для примера)Регулярное выражение, созданное мной для обнаружения всех типов чисел в следующей цепочке, может представлять интерес для вас:
stackoverflow.com / questions / 5917082 / регулярное выражение для совпадения чисел с-Без-запятых-и-десятичные-в-текст / 5929469