Посчитаем количество пробелов в промежутках между строками в вашем примере:
>>> a = '0 1 2 3 4 5 6 7 8 9'
>>> import re
>>> [len(x) for x in re.split('\d',a)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
вы меняете каждые 3 пробела на 1
c=a.replace(' ', ' ', 2000)
>>> [len(x) for x in re.split('\d',c)]
[0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 0]
Соответственно там где количество пробелов менее 3 - их оставляем
Там где более или равно - каждые три пробела меняем на один + остаток не делящийся на 3
К примеру для 8 пробелов:
>>> (lambda x: x//3 + x%3)(8)
4
Для 9:
>>> (lambda x: x//3 + x%3)(9)
3
Параметр 2000 указывает лишь на то, что в каждом случае провести не более 2000 замен. Поскольку у вас количество пробелов в примере заведомо меньшее - этот параметр не оказывает никакого влияния. Если было бы больше - то было бы произведено количество замен, не большее 2000.
Наглядно изменение третьего параметра:
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 0))]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 1))]
[0, 1, 2, 1, 4, 5, 6, 7, 8, 9, 0]
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 2))]
[0, 1, 2, 1, 2, 5, 6, 7, 8, 9, 0]
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 3))]
[0, 1, 2, 1, 2, 3, 6, 7, 8, 9, 0]
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 4))]
[0, 1, 2, 1, 2, 3, 4, 7, 8, 9, 0]
>>> [len(x) for x in re.split('\d',a.replace(' ', ' ', 5))]
[0, 1, 2, 1, 2, 3, 2, 7, 8, 9, 0]
...