Попробуйте себя в топовых IT-профессиях и соберите первое портфолио. Бесплатный курс Попробуйте себя в топовых IT-профессиях и соберите первое портфолио. Бесплатный курс Учиться
Код
#статьи

Что делает метод replace() в Python и как им пользоваться

Редактируем строки без лишнего кода.

Иллюстрация: Оля Ежак для Skillbox Media

Если вы недавно начали изучать Python, скорее всего, ваша первая программа выводила фразу «Hello, world!». Так бывает почти у всех. Но, полагаем, уже скоро вам захочется вывести другую строку — «Hello, job!».

Для замены одного слова на другое в Python удобно использовать метод replace(). В статье мы разберём, как это работает. Надеемся, что после его изучения вы так же легко справитесь с поиском своей первой «job».

Содержание


Как работает replace()

Метод replace() в Python — это встроенная функция для работы со строками, которая имеет следующий синтаксис:

строка.replace(что_заменить, на_что_заменить, сколько_раз_заменить)

Формально это выглядит так:

str.replace(old, new, count=-1)

Посмотрите, что здесь происходит:

  • str — имя переменной, в которой хранится исходная строка. Это может выглядеть, например, так: text = «Hello, world!».
  • old — подстрока, которую нужно найти и заменить. В строке Hello, world! мы будем менять слово world. А вообще, подстрокой считается любая последовательность символов внутри строки. Это может быть слово, часть слова или один символ. То есть помимо слова world в качестве подстроки мы можем выбрать Hello, lo или даже просто o.
  • new — подстрока, которая подставляется вместо old. В нашем примере такой подстрокой будет слово job.
  • count — необязательный параметр, который позволяет указать, сколько первых совпадений нужно заменить. Если не указывать count или явно задать count=-1, то заменятся все совпадения. Так, если в строке Python hello, hello, hello заменить hello на hi с параметром count=2, то результат будет Python hi, hi, hello. А если оставить значение по умолчанию, то мы получим Python hi, hi, hi.

В следующем разделе мы разберём примеры использования метода replace(). Чтобы лучше усвоить материал, попробуйте повторить их самостоятельно. Для этого вам нужно установить Python и выбрать редактор кода. А если не хочется ничего устанавливать, воспользуйтесь бесплатным сервисом Google Colab и запускайте код прямо в браузере.

Как использовать метод replace()

Перед рассмотрением примеров обратите внимание ещё на один момент: метод replace() чувствителен к регистру. Это значит, что он воспринимает строки World и world как разные последовательности символов, поэтому при замене будет работать только точное совпадение. А теперь к практике.

Простая подстановка слова. Завершим пример из введения и заменим наше единственное вхождение слова world на job:

text = "Hello, world!"
new_text = text.replace("world", "job")
print(new_text)

# Hello, job!

Дополнительно проверим чувствительность к регистру. Попробуем заменить job на Job и убедимся, что результат не изменится:

text = "Hello, job!"
new_text = text.replace("Job", "developer")
print(new_text)

# Hello, job!

Работа с символами. Заменим все точки в предложении на запятые и проверим, как метод replace() справится с отдельными символами:

text = "Python. Is. Easy. To. Learn!"
new_text = text.replace(".", ",")
print(new_text)

# Python, Is, Easy, To, Learn!

Частичная подстановка. Воспользуемся параметром count и немного изменим строку из песни Nirvana:

text = "Hello, hello, hello, how low"
new_text = text.replace("hello", "hi", 2)
print(new_text)

# Hello, hi, hi, how low

Множественная подстановка. Продолжим разбирать строку из песни Nirvana, но теперь заменим сразу несколько слов:

text = "Hello, hello, hello, how low\nWith the lights out, it's less dangerous\nHere we are now, entertain us"
new_text = (
    text.replace("hello", "hi")
        .replace("low", "high")
        .replace("lights", "mood")
        .replace("dangerous", "chill")
)
print(new_text)

# Hello, hi, hi, how high
# With the mood out, it's less chill
# Here we are now, entertain us

Удаление части строки. В Python пустая строка также считается строкой, поэтому с помощью replace() можно удалять ненужные фрагменты текста. Для этого достаточно указать, что мы хотим удалить, а в качестве подстановки передать пустые кавычки «". Например, уберём дефисы из телефонного номера, чтобы остались только цифры:

phone = "+7-495-123-45-67"
cleaned_phone = phone.replace("-", "")
print(cleaned_phone)

# +74951234567

Мини-проект на закрепление: создаём текстовый фильтр с replace()

В реальных проектах метод replace() часто используют для обработки и преобразования текстов. Например, с его помощью можно очищать комментарии от нежелательных слов, исправлять опечатки или скрывать конфиденциальные данные: имена, номера телефонов и прочие.

Давайте создадим простой текстовый фильтр: добавим в него список нехороших фраз и будем заменять их звёздочками при вводе текста.

Шаг 1. Создадим список слов, которые программа будет искать в тексте:

bad_words = [
    "php лучше python",
    "пишу код без тестов",
    "Stack Overflow умер",
    "люблю xml",
    "верстаю на диванах",
    "дебажу в проде",
    "всё работает, не трогай",
    "написал свой фреймворк",
    "просто добавь AI",
    "джава лучше всех",
    "всё на jQuery",
    "css — это просто",
    "мне не нужен ваш git",
    "главное — чтобы запускалось",
    "типизация мешает творчеству"
]

Шаг 2. Спросим у пользователя, что он хочет написать:

user_text = input("Введите текст: ")

Шаг 3. Пройдёмся циклом по всем словам из нашего списка и заменим их на звёздочки той же длины:

for word in bad_words:
    stars = "*" * len(word)
    user_text = user_text.replace(word, stars)

Шаг 4. Выведем отредактированный текст после цензуры:

print("Результат:")
print(user_text)

Теперь попробуйте вставить в поле ввода следующую фразу или придумайте свою: «Я пишу код без тестов, и всё работает, — не понимаю, зачем это нужно?» В результате вы должны увидеть много звёздочек:

Я *******************, и всё работает, — не понимаю, зачем это нужно?

Наша программа готова, но её всегда можно доработать. Попробуйте, например, добавить учёт регистра, расширить список нежелательных слов или настроить фильтрацию сразу нескольких слов в одной фразе.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!



Курс с трудоустройством: «Профессия Python-разработчик» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована