Пользователи при написании кода на Python часто сталкиваются с необходимостью корректно отредактировать строковые данные. Среди возможных изменений могут быть: удаление некоторых символов из последовательности или их замена на другие, изменение регистра символов, объединение подстрок в одну последовательность и другие. Из этого списка возможных преобразований строковых данных мы остановимся на самом первом.
В настоящей инструкции мы расскажем, как удалять символы из строки в Python и какие методы для этого можно использовать.
Важно сразу отметить, что объекты строк в Python — неизменяемы. Это означает, что все методы и функции, взаимодействующие со строками, будут возвращать новый объект с измененной последовательностью символов.
cloud
В данном разделе инструкции будет рассказано об основных методах, которые существуют в Python и используются в том числе для удаления символов из последовательности. Среди них будут рассмотрены методы replace()
, translate()
и re.sub()
. Ниже мы опишем их синтаксис, а также приведем примеры их использования в конкретных ситуациях.
Первый метод, который будет рассмотрен в данном разделе, — это 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)
В результате работы кода получим новый объект строки, который продемонстрирован на картинке ниже.
Чтобы удалить символ переноса строки в 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}')
После выполнения программы мы получим результат, который продемонстрирован на картинке ниже.
Как мы уже говорили ранее, у метода 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}')
Результат:
Как видно по картинке выше, метод сработал именно столько раз, сколько указано в параметре. Все остальные вхождения подстроки «Timeweb Cloud» были проигнорированы.
В данной главе мы изучили работу метода replace()
и показали лишь малую часть тех ситуаций, в которых следует его использовать. Теперь перейдем к другому методу, который также поможет пользователям удалять и изменять символы в строке, — 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}')
По завершении работы программы мы получили результат, представленный на картинке ниже.
Также, возможно указать таблицу сопоставлений до вызова метода для более читаемого кода, например, если в программе большое количество заменяемых символов. Ниже в примере удалим все вхождения специальных знаков «$», «\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}')
Результат работы программы продемонстрирован на картинке ниже.
Кроме представленных выше методов, возможно использовать регулярные выражения для удаления и замены символов в строке. Для начала, в своем коде мы должны инициализировать соответствующий модуль 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}')
В данном примере мы удалили все пробелы из строки. Результат работы кода продемонстрирован на картинке ниже.
Помимо использования разнообразных методов для удаления символов, в 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}')
В данном примере мы использовали срезы, чтобы избавиться от знаков переноса строки. Результат работы кода показан на картинке ниже.
Помимо двух параметров среза возможно использовать и третий. Он указывает на шаг прироста индексов. Так, например, если шаг будет равен 2, то каждый нечетный элемент строки будет удален. Не забывайте учитывать, что индексы начинаются с 0.
Пример:
example_str = "Timeweb Cloud"
print(f'Original string: {example_str}')
result_str = example_str[::2]
print(f'String after adjustments: {result_str}')
Результат работы программы продемонстрирован на картинке ниже.
Подготовили для вас выгодные тарифы на облачные серверы
В настоящей инструкции мы научились удалять символы из строки в Python, используя разные методы языка, а также регулярные выражения и срезы. Выбор способа, который вы будете использовать для удаления, остается за вами. Он будет напрямую зависеть от условий задачи. Так, например, метод replace()
подойдет для более простых ситуаций, а re.sub()
для сложных.