Строки — один из базовых типов данных в языке программирования Python, который хранит последовательность символов.
Со строками можно выполнять множество операций: разделять, соединять, заменять, сравнивать и т.д.
Однако иногда строки необходимо форматировать, очищая от лишних символов. Например, удалять проблемы, которые не нужны.
В этой статье мы рассмотрим существующие способы удаления пробелов из строки в языке программирования Python с интерпретатором версии 3.10.12.
Удалить пробелы в начале и в конце
Часто необходимо удалить не все пробелы целиком, а только лишние. Например, в начале и конце строки.
Для этого в языке Python есть несколько похожих методов:
- Функция
strip()удаляет пробелы и в начале строки, и в конце - Функция
lstrip()удаляет пробелы только в начале строки - Функция
rstrip()удаляет пробелы только в конце строки
Вот пример того, как можно очистить строку от лишних пробелов по краям:
В терминале консоли появится вот такой результат:
Облачные серверы
по всему миру с почасовой оплатой.
Удалить все пробелы
В некоторых случаях необходимо удалить все пробелы полностью. Это делается через замену каждого вхождения символа пробела на «отсутствующий символ»:
В консоли появится строка, в которой не будет ни одного пробела:
Есть и другой способ удаления всех пробелов — менее интуитивный, но в некоторых случаях более гибкий:
Консольный вывод будет аналогичным предыдущему:
Функция translate() принимает в качестве аргумента словарь, ключи которого — ASCII-коды заменяемых символов, а значения — символы, на которые выполняется замена.
При этом функция ord() преобразует явно указанный символ в соответствующий ему код ASCII.
Таким образом, метод translate() дает больше гибкости — можно за один раз заменить множество символов.
Если в коде необходимо выполнить несколько строковый преобразований, то можно заранее подготовить специальную таблицу символов, которая будет передаваться в качестве аргумента функции translate():
В консольном терминале появится вот такой вывод:
Удалить повторяющиеся пробелы
Самый простой способ удалить все повторяющиеся пробелы в строке — последовательно выполнить несколько операций:
-
Разделить строку с помощью функции
split()по разделителю в виде символов пробела, получив список подстрок.
-
Объединить подстроки из списка с помощью функции
join()в целую строку с помощью разделителя в виде одного символа пробела.
Вот как это можно сделать:
В консоли появится отформатированная строка без лишних пробелов:
Показанные манипуляции со строкой можно записать короче:
Консольный вывод будет тот же самый:
На самом деле таким способом можно подставить любой символ вместо пробела:
В этом случае в терминале консоли появится уже такой вывод:
Удалить пробелы с помощью регулярного выражения
Показанные способы эффективны в крайне простых сценариях, но зачастую строки имеют более неоднородную символьную структуру, от чего требуются более сложные методы удаления пробелов.
Наиболее гибкий способ редактирования строк — регулярные выражения.
Консольный вывод будет содержать строку, в которой остались только одиночные пробелы:
В этом примере есть несколько проблем:
-
Перед точкой в конце стояло несколько пробелов, которые заменяются на один. Однако перед точкой не должно быть пробела вообще.
-
Последовательность пробелов в начале строки заменяется на один пробел. Однако вначале строки не должно быть пробелов вообще.
Исправить это можно, сделав несколько последовательных преобразований:
Вывод в терминале консоли будет содержать нормальную запись строки без каких-либо лишних пробелов:
В показанных регулярных выражениях указатель \s обозначает любой пробельный символ, знак + указывает на повторение один и более раз, символ * на повторение 0 и более раз, а символ | является аналогом оператора OR.
В реальных задачах важно понимать возможную структуру обрабатываемых строк для того, чтобы написать правильный обработчик пробелов. Например, если строка может иметь точки, окруженные пробелами, это придется учесть в логике приложения.
Чем больше нюансов в обрабатываемых строках, тем сложнее будет логика удаления пробелов. Таким образом, для удаления пробелов из строки в Python требуется уникальное решение, создаваемое для каждого конкретного случая.
Удалить пробелы с помощью цикла
Для создания сложной логики обработки строк (в данном случае, для удаления пробелов) можно использовать ручной метод — проверка каждого символа в цикле со множеством условий. Такой подход дает больше гибкости и контроля.
В самом тривиальном случае удаление пробелов внутри цикла выглядит так:
Консольный вывод будет содержать все символы исходной строки, но без пробелов:
Очевидно, это не тот результат, который требуется, поэтому логику удаления нужно усложнить:
В консольном выводе мы получим идеально обработанные строки без лишних пробелов:
Размещайте Python-проекты в облаке Timeweb Cloud
477 ₽/мес
657 ₽/мес
Заключение
Язык программирования Python предлагает определенный набор встроенных средств для редактирования строк — например, манипуляции с символами пробела:
- Удаление пробелов в начале строки
- Удаление пробелов в конце строки
- Удалении пробелов с обоих концов строки
- Удаление всех пробелов в строке
- Удаление пробелов из строки по определенным правилам (через регулярные выражение)
- Удаление пробелов по уникальным правилам (с помощью итерации)
Для каждого варианта есть свой набор методов — большую часть из них мы рассмотрели в этом руководстве.
