Строки

Замена пробелов на указанные символы. Разбор задачи

Давайте рассмотрим простую задачку на работу со строками.

#Напишите метод для замены всех пробелов в строке на '%20'. #Игнорируйте любые дополнительные пробелы в начале или конце строки.

Вероятно, вы замечали, что URL-адреса никогда не содержат пробелов. Если вы попробуете ввести в браузере URL и включите в него пробел, браузер конвертирует его в экранированный символ «%20». Попробуйте набрать в Chrome http://google.com/ /, и вы увидите, что адрес преобразуется в http://google.com/%20/. Не то чтобы этот адрес привел вас куда-то, но принцип должен быть понятен.

В этой задаче нам нужно написать метод, который будет делать то, что только что сделал ваш браузер: принимать строку и возвращать ее в зашифрованной форме, с пробелами, замененными на «%20».

Начнем с определения нашего метода, принимающего строку s.

def urlify(s):
    pass

Теперь давайте обратим внимание на дополнение к условию: нужно игнорировать все дополнительные пробелы в начале или конце строки. Разделаемся с этим сразу же, применив метод Python strip(). Этот метод, собственно, удаляет любые пробелы в начале и конце строки.

def urlify(s):
    s = s.strip()

Теперь давайте подумаем, как выловить пробелы внутри строки. Мы можем перебрать строку в цикле и проверить каждый символ, заменяя обнаруженные пробелы. Но есть и более простой способ сделать это. В Python есть встроенные методы, позволяющие делить строку по заданному символу. После разделения мы сможем соединить отрезки вместе, заменив пробелы на «%20».

Начнем с вызова метода split(). Мы можем вызвать его после нашего метода .strip(). Этот метод принимает один аргумент — символ-разделитель. В нашем случае это единичный пробел.

def urlify(s):
    s = s.strip().split(" ")

Это дает нам список строк. Например, если строка была «Hello my name is Pythonist», в списке s теперь содержатся строки ["Hello", "my", "name", "is", "Pythonist"].

Теперь нам нужно склеить все обратно. Метод join() немного странный. Вы вызываете его для строки, которую хотите вставить между словами, а список слов передаете в качестве аргумента. Таким образом, если наша замещающая строка — «%20», мы вызываем после нее метод .join() и передаем ему в качестве аргумента наш список s. Можно переопределить переменную s, но здесь мы просто вернем результат.

def urlify(s):
    s = s.strip().split(" ")
    return ("%20").join(s)

Вот и все! Повторим:

  1. Пробелы в начале и конце строки обрезаются при помощи метода strip().
  2. Строка делится по символу пробела при помощи метода split().
  3. Метод join() объединяет строку, вставляя между ее частями «%20».

Проверяем

Передаем нашему методу urlify строку, содержащую пробелы. Должна вернуться строка, в которой эти пробелы будут заменены на экранированный символ URL.

print(urlify("My name is Pythonist "))
# -> My%20name%20is%20Pythonist

Марина

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago