Как удалить пробелы из строки в Python: инструкция

    Команда Simple-Server
    03.06.2026
    8 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Удалить пробелы в начале и в конце

    Часто необходимо удалить не все пробелы целиком, а только лишние. Например, в начале и конце строки.

    Для этого в языке Python есть несколько похожих методов:

    • Функция strip() удаляет пробелы и в начале строки, и в конце
    • Функция lstrip() удаляет пробелы только в начале строки
    • Функция rstrip() удаляет пробелы только в конце строки

    Вот пример того, как можно очистить строку от лишних пробелов по краям:

    text_before = " Это некоторая строка с пробелами " text_after = text_before.strip() text_after_left = text_before.lstrip() text_after_right = text_before.rstrip() print(text_after) print(text_after_left) print(text_after_right)

    В терминале консоли появится вот такой результат:

    Это некоторая строка с пробелами Это некоторая строка с пробелами Это некоторая строка с пробелами

    В некоторых случаях необходимо удалить все пробелы полностью. Это делается через замену каждого вхождения символа пробела на «отсутствующий символ»:

    text_before = " Это некоторая строка с пробелами " text_after = text_before.replace(' ', '') print(text_after)

    В консоли появится строка, в которой не будет ни одного пробела:

    Этонекотораястрокаспробелами

    Есть и другой способ удаления всех пробелов — менее интуитивный, но в некоторых случаях более гибкий:

    text_before = " Это некоторая строка с пробелами " text_after = text_before.translate({ord(' '): None}) print(text_after)

    Консольный вывод будет аналогичным предыдущему:

    Этонекотораястрокаспробелами

    Функция translate() принимает в качестве аргумента словарь, ключи которого — ASCII-коды заменяемых символов, а значения — символы, на которые выполняется замена.

    При этом функция ord() преобразует явно указанный символ в соответствующий ему код ASCII.

    Таким образом, метод translate() дает больше гибкости — можно за один раз заменить множество символов.

    Если в коде необходимо выполнить несколько строковый преобразований, то можно заранее подготовить специальную таблицу символов, которая будет передаваться в качестве аргумента функции translate():**
    **

    text_before1 = " Это некоторая строка с пробелами " text_before2 = " 1 2 3 4 5 " text_before3 = " { 'someData': 100, 'otherData': 'information' } " space_table = str.maketrans({' ': None}) text_after1 = text_before1.translate(space_table) text_after2 = text_before2.translate(space_table) text_after3 = text_before3.translate(space_table) print(text_after1) print(text_after2) print(text_after3)

    В консольном терминале появится вот такой вывод:

    Этонекотораястрокаспробелами 12345 {'someData':100,'otherData':'information'}

    Удалить повторяющиеся пробелы

    Самый простой способ удалить все повторяющиеся пробелы в строке — последовательно выполнить несколько операций:

    • Разделить строку с помощью функции split() по разделителю в виде символов пробела, получив список подстрок.

    Разделить строку с помощью функции split() по разделителю в виде символов пробела, получив список подстрок.

    • Объединить подстроки из списка с помощью функции join() в целую строку с помощью разделителя в виде одного символа пробела.

    Объединить подстроки из списка с помощью функции join() в целую строку с помощью разделителя в виде одного символа пробела.

    Вот как это можно сделать:

    text_before = " Это некоторая строка с пробелами " text_splitted = text_before.split() # делим строку на подстроки, при этом разделитель не указываем — пробел является разделителем по умолчанию text_after = ' '.join(text_splitted) # соединяем полученные подстроки в одну строку, вызывая функцию от символа пробела, который и является разделителем print(text_after)

    В консоли появится отформатированная строка без лишних пробелов:

    Это некоторая строка с пробелами

    Показанные манипуляции со строкой можно записать короче:

    text_before = " Это некоторая строка с пробелами " text_after = ' '.join(text_before.split()) print(text_after)

    Консольный вывод будет тот же самый:

    Это некоторая строка с пробелами

    На самом деле таким способом можно подставить любой символ вместо пробела:

    text_before = " Это некоторая строка с пробелами " text_after = '_'.join(text_before.split()) print(text_after)

    В этом случае в терминале консоли появится уже такой вывод:

    Это_некоторая_строка_с_пробелами

    Удалить пробелы с помощью регулярного выражения

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

    Наиболее гибкий способ редактирования строк — регулярные выражения.

    import re # импортируем модуль для работы с регулярными выражениями text_before = " Это некоторая строка с пробелами . " # строка, в которой есть последовательности двух и более пробелов, а также несколько одиночных пробелов text_after = re.sub(r"\s+", " ", text_before) # заменяем все последовательности двух и более пробелов на одиночные пробелы print(text_after)

    Консольный вывод будет содержать строку, в которой остались только одиночные пробелы:

    Это некоторая строка с пробелами .

    В этом примере есть несколько проблем:

    • Перед точкой в конце стояло несколько пробелов, которые заменяются на один. Однако перед точкой не должно быть пробела вообще.

    Перед точкой в конце стояло несколько пробелов, которые заменяются на один. Однако перед точкой не должно быть пробела вообще.

    • Последовательность пробелов в начале строки заменяется на один пробел. Однако вначале строки не должно быть пробелов вообще.

    Последовательность пробелов в начале строки заменяется на один пробел. Однако вначале строки не должно быть пробелов вообще.

    Исправить это можно, сделав несколько последовательных преобразований:

    import re text_before = " Это некоторая строка с пробелами . " text_after = re.sub(r"^\s*|\s*quot;, "", text_after) # удаляем пробелы в начале и конце строки, используя оператор OR в виде символа | text_after = re.sub(r"\s+", " ", text_before) # заменяем все повторяющиеся пробелы на одиночный пробел text_after = re.sub(r"\s*[.]\s*", ".", text_after) # заменяем все точки, окруженные пробелами на просто точки print(text_after)

    Вывод в терминале консоли будет содержать нормальную запись строки без каких-либо лишних пробелов:

    Это некоторая строка с пробелами.

    В показанных регулярных выражениях указатель \s обозначает любой пробельный символ, знак + указывает на повторение один и более раз, символ * на повторение 0 и более раз, а символ | является аналогом оператора OR.

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

    Чем больше нюансов в обрабатываемых строках, тем сложнее будет логика удаления пробелов. Таким образом, для удаления пробелов из строки в Python требуется уникальное решение, создаваемое для каждого конкретного случая.**
    **

    Удалить пробелы с помощью цикла

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

    В самом тривиальном случае удаление пробелов внутри цикла выглядит так:

    # определяем отдельную функцию для более сложной логики обработки строки def complexRemoval(string): after = "" for i in string: if(not i.isspace()): after += i # функция isspace() проверяет, является ли символ пробелом, и возвращает булевый результат — true или false return after text_before = " Это некоторая строка с пробелами . " text_after = complexRemoval(text_before) print(text_after)

    Консольный вывод будет содержать все символы исходной строки, но без пробелов:

    Этонекотораястрокаспробелами.

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

    def complexRemoval(string): after = "" wasSpace = True # переменная указывает, был ли предыдущий символ пробелом for i in string: if(not i.isspace()): # если не пробел if(i == '.' and wasSpace): after = after[:len(after)-1] # если попалась точка, а предыдущий символ был пробелом — удаляем его after += i wasSpace = False elif(not wasSpace): # если пробел, но предыдущий не был пробелом after += i wasSpace = True return after print(complexRemoval(" Это некоторая строка с пробелами . ")) print(complexRemoval("Много разных пробелов бла бла бла . Еще и точка . "))

    В консольном выводе мы получим идеально обработанные строки без лишних пробелов:

    Это некоторая строка с пробелами. Много разных пробелов бла бла бла. Еще и точка.

    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны