Задать вопрос
weranda
@weranda

Почему строковый метод .replace() в python не проводит нужное количество замен?

Приветствую

Не понимаю почему строковый метод замены не проводит нужное количество замен в строке.

Пример:
a = '0 1  2   3    4     5      6       7        8         9'
print(a.replace('  ', ' ', 2000))
>>> 0 1  2 3  4   5  6   7    8   9


Казалось бы, должны остаться только одинарные пробелы, но нет – они остаются даже в том случае, если использовать две тысячи замен.

Поясните пожалуйста почему происходит именно так.

P.S.
Понятно что можно использовать регулярные выражения, но интересует работа именно этого метода.
  • Вопрос задан
  • 869 просмотров
Подписаться 2 Оценить Комментировать
Решение пользователя weranda К ответам на вопрос (3)
weranda
@weranda Автор вопроса
Владимир
Александр Опарин
Правильно ли я понял?

Замены с помощью этого метода последовательны и начинаются с левой части строки. Метод последовательно обрабатывает в данном примере первые два пробела – меняет их на один и более не возвращается к замененным элементам и идет дальше, т.е. продолжает уже поиск совпадений начиная с третьего элемента. На следуещем совпадении метод делает тоже самое и также не возвращается к предыдущим элементам, несмотря на то, что там два пробела, а ничинает поиск совпадений уже с пятого элемента. Не найдя более совпадений, метод останавливается даже в том случае, когда указано большое количество замен. Он просто линейно слева направо делает замены и не возвращается обратно, как это происходит с регулярными выражениями.

0862d403e57f4c40b843b7c6ec82fefb.png
Ответ написан