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

Как удалить символы из строки в Python

Илья Ушаков
Илья Ушаков
Технический писатель
16 мая 2023 г.
2580
6 минут чтения
Средний рейтинг статьи: 2.2

Пользователи при написании кода на Python часто сталкиваются с необходимостью корректно отредактировать строковые данные. Среди возможных изменений могут быть: удаление некоторых символов из последовательности или их замена на другие, изменение регистра символов, объединение подстрок в одну последовательность и другие. Из этого списка возможных преобразований строковых данных мы остановимся на самом первом.

В настоящей инструкции мы расскажем, как удалять символы из строки в Python и какие методы для этого можно использовать.

Важно сразу отметить, что объекты строк в Python — неизменяемы. Это означает, что все методы и функции, взаимодействующие со строками, будут возвращать новый объект с измененной последовательностью символов.

Методы удаления символов из строки

В данном разделе инструкции будет рассказано об основных методах, которые существуют в Python и используются в том числе для удаления символов из последовательности. Среди них будут рассмотрены методы replace(), translate() и re.sub(). Ниже мы опишем их синтаксис, а также приведем примеры их использования в конкретных ситуациях.

replace()

Первый метод, который будет рассмотрен в данном разделе, — это replace(). Он предназначен для замены конкретных символов в строке на другие. В результате, replace() возвращает новый объект строки со всеми внесенными изменениями. Его синтаксис выглядит следующим образом:

исходная_строка.replace(old, new[, count])

Здесь: 

  • исходная_строка – последовательность, в которой будут происходить корректировки;
  • old – здесь указываем то, что будет заменено;
  • new – а здесь указываем то, на что будет производиться замена;
  • count – это необязательный параметр, который указывает на количество необходимых замен.

Ниже приведем пример, в котором удалим все вхождения символа в строку в Python, а именно пробела в последовательности «T i m e w e b»:

example_str = "T i m e w e b"

result_str = example_str.replace(" ", "")
print(result_str)

В результате работы кода получим новый объект строки, который продемонстрирован на картинке ниже.

Image8

Чтобы удалить символ переноса строки в Python, возможно также использовать рассматриваемый метод replace(). Для этого в качестве первого аргумента необходимо указать специальный знак переноса строки, как это показано в примере ниже:

example_str = "\nTimeweb\nCloud"
print(f'Original string: {example_str}')

result_str = example_str.replace("\n", " ")
print(f'String after adjustments: {result_str}')

После выполнения программы мы получим результат, который продемонстрирован на картинке ниже.

Image3

Как мы уже говорили ранее, у метода replace() существует третий необязательный аргумент, который отвечает за количество необходимых замен. Продемонстрируем его работу на примере ниже:

example_str = "Timeweb Cloud Timeweb Cloud Timeweb Cloud"
print(f'Original string: {example_str}')

result_str = example_str.replace("Timeweb Cloud", "", 2)
print(f'String after adjustments: {result_str}')

Результат:

Image1

Как видно по картинке выше, метод сработал именно столько раз, сколько указано в параметре. Все остальные вхождения подстроки «Timeweb Cloud» были проигнорированы.

В данной главе мы изучили работу метода replace() и показали лишь малую часть тех ситуаций, в которых следует его использовать. Теперь перейдем к другому методу, который также поможет пользователям удалять и изменять символы в строке, — translate().

translate()

Предназначение translate() точно такое же, как и у прошлого метода. Однако у него есть свои функциональные особенности. В первую очередь, он в качестве аргумента принимает словарь или таблицу сопоставлений. После выполнения замены или удаления он возвращает новый объект типа String

Синтаксис метода выглядит следующим образом:

исходная_строка.translate(таблица)

Ниже в примере покажем, как удалить определенные символы из строки в Python, используя метод translate():

example_str = "Timeweb$Cloud$—$IT-решения$в$облаке."
print(f'Original string: {example_str}')

result_str = example_str.translate({ord('$'): ' '})
print(f'String after adjustments: {result_str}')

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

Image5

Также, возможно указать таблицу сопоставлений до вызова метода для более читаемого кода, например, если в программе большое количество заменяемых символов. Ниже в примере удалим все вхождения специальных знаков «$», «\n» и «%» в строку:

example_str = "\nTimeweb%Cloud$—$IT-решения$в$облаке.\n"
print(f'Original string: {example_str}')

example_table = {ord('\n') : None, ord('$') : ' ', ord('%') : ' '}
result_str = example_str.translate(example_table)
print(f'String after adjustments: {result_str}')

Результат работы программы продемонстрирован на картинке ниже.

Image4

re.sub()

Кроме представленных выше методов, возможно использовать регулярные выражения для удаления и замены символов в строке. Для начала, в своем коде мы должны инициализировать соответствующий модуль re, а затем использовать его метод sub(). Он, как и предыдущие методы, ищет необходимые символы в последовательности по указанному шаблону и заменяет их. Данный процесс выполняется строго слева направо. 

Синтаксис re.sub() представлен ниже:

re.sub(шаблон, замена, исходная_строка [, count=0, flags=0])

Данный метод содержит 5 параметров, 2 из которых являются необязательными:

  • шаблон – это и есть регулярное выражение, по которому будет выполняться поиск в последовательности;
  • замена – это символы или их последовательность, на которые будет выполняться замена;
  • исходная_строка – последовательность, в которой будет выполняться весь процесс;
  • count и flags – два необязательных параметра, которые отвечают за количество замен в указанной последовательности символов и использование флагов соответственно.

Например, чтобы удалить повторяющиеся символы в строке в Python, воспользуемся регулярными выражениями и методом sub() модуля re:

import re

example_str = "T i m e w e b"
print(f'Original string: {example_str}')

result_str = re.sub('\s', '', example_str)
print(f'String after adjustments: {result_str}')

В данном примере мы удалили все пробелы из строки. Результат работы кода продемонстрирован на картинке ниже.

Image6

Использование срезов для удаления символов

Помимо использования разнообразных методов для удаления символов, в Python также возможно использовать срезы. Как мы знаем, срезы — это извлеченная последовательность символов из строки.

Чтобы удалить символы из строки по индексу в Python, воспользуемся следующим срезом:

example_str = "\nTimeweb \nCloud"
print(f'Original string: {example_str}')

result_str = example_str[1:9] + example_str[10:]
print(f'String after adjustments: {result_str}')

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

Image3

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

Пример:

example_str = "Timeweb Cloud"
print(f'Original string: {example_str}')

result_str = example_str[::2]
print(f'String after adjustments: {result_str}')

Результат работы программы продемонстрирован на картинке ниже.

Image2

Заключение

В настоящей инструкции мы научились удалять символы из строки в Python, используя разные методы языка, а также регулярные выражения и срезы. Выбор способа, который вы будете использовать для удаления, остается за вами. Он будет напрямую зависеть от условий задачи. Так, например, метод replace() подойдет для более простых ситуаций, а re.sub() для сложных.

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону