Программирование

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

Узнайте, как удалить все пробелы из строки в Python: replace(), split() + join(), regex и translate(). Полное руководство по python удалить пробелы, включая сравнение производительности и примеры кода для строк без пробелов.

Как удалить все пробелы из строки в Python, включая пробелы между словами?

Я хочу удалить все пробелы из строки, включая пробелы в начале и в конце, а также между словами. У меня есть следующий код на Python:

python
def my_handle(self):
 sentence = ' hello apple '
 sentence.strip()

Однако метод strip() удаляет пробелы только в начале и в конце строки. Как можно удалить все пробелы, включая пробелы между словами?

Чтобы удалить все пробелы из строки в Python, включая те, что между словами, используйте sentence.replace(' ', '') — это самый простой способ заменить все пробелы на пустоту. Альтернатива — ''.join(sentence.split()), которая разбивает строку по любым пробелам (включая табы и переносы) и склеивает обратно без них. Ваш код с strip() работает только на краях, так что для полного удаления пробелов из строки Python нужны эти методы.


Содержание


Почему strip() не подходит

strip() — отличный инструмент, но только для краёв. Возьмём вашу строку ' hello apple ': после strip() останется 'hello apple' с пробелом посередине. А вы хотите 'helloapple', верно?

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

Поэтому для удаления всех пробелов в строке Python переходите к полным методам. В руководстве на Timeweb чётко объясняют: strip() для границ, а для всего — другие приёмы.


Удалить все пробелы методом replace()

Самый прямолинейный вариант — replace(). Он ищет все ' ' и меняет на ''.

python
sentence = ' hello apple world\t'
sentence = sentence.replace(' ', '') # 'helloappleworld'
print(sentence)

Видите? Пробелы между словами ушли, включая множественные. Работает быстро на простых строках.

Но стоп: replace() ловит только обычный пробел ' ', а не табы \t или \n. Если строка из файла с переносами — добавьте:

python
sentence = sentence.replace(' ', '').replace('\t', '').replace('\n', '')

Или цепочкой. В статье на Sky.pro подчёркивают: replace() идеален для строки Python без пробелов именно между словами.

А что насчёт Unicode-пробелов? Редко, но бывает. Тогда лучше regex, о нём ниже.


Строка Python без пробелов через split() и join()

Хотите универсальности? split() разобьёт по любому whitespace (\s — пробелы, табы, \n), а join() склеит без разделителя.

python
sentence = ' hello apple world\t\n'
no_spaces = ''.join(sentence.split())
print(no_spaces) # 'helloappleworld'

Круто, правда? Один вызов — и все типы пробелов стёрты. Не нужно перечислять \t, \n.

Из Pythonist.ru: это топ-метод для python убрать пробелы из любой строки. Плюс, split() по умолчанию игнорирует множественные пробелы.

Минус? Если в строке нет слов, а только пробелы — вернёт пустую строку. Логично.


Регулярные выражения для сложных случаев

Когда пробелов — тьма, или нужны нестандартные (non-breaking space )? re.sub() из модуля re.

python
import re
sentence = ' hello apple world\t\n'
no_spaces = re.sub(r'\s+', '', sentence)
print(no_spaces) # 'helloappleworld'

\s+ — любой whitespace один или больше. Флаг re.UNICODE для экзотики.

На ru.StackOverflow хвалят именно этот подход за гибкость. Для удалить пробелы в строке python с Unicode — must-have.

Импорт: import re. Медленнее replace, но универсальнее.


Производительность: translate() и сравнение методов

Для больших строк или циклов — translate(). Он использует таблицу символов, супербыстрый.

python
sentence = ' hello apple '
table = str.maketrans('', '', ' \t\n\r') # Что удалить
no_spaces = sentence.translate(table)
print(no_spaces) # 'helloapple'

Только ASCII-whitespace. Для Unicode — сложнее.

Сравним по StackOverflow benchmarks: на 1M символов replace() ~7x быстрее regex. Таблица методов из FixMyPC:

Метод Код Скорость Что ловит
replace replace(' ', '') Высокая Только ’ ’
split+join ''.join(split()) Средняя Все \s
re.sub re.sub(r'\s+', '') Низкая Все \s + Unicode
translate translate(table) Высочайшая Указанные символы

Выбирайте по задаче. Цикл? translate(). Простота? replace().


Частые ошибки и советы

Не забудьте присвоить результат! Ваш код sentence.strip() ничего не меняет — строки immutable.

python
# ❌ Неправильно
sentence.strip()

# ✅ Правильно
sentence = sentence.strip()

Множественные пробелы? Все методы справятся.

Пробелы в списке строк? Цикл: [s.replace(' ', '') for s in lines].

Задача: посчитать пробелы перед удалением? sentence.count(' ').

Тестируйте на реальных данных. В ru.StackOverflow обсуждают edge-кейсы: пустая строка → пустая.


Источники

  1. ru.StackOverflow: Как удалить все пробелы из строки в Python
  2. Timeweb: Как удалить пробелы из строки в Python
  3. Sky.pro: Удаление всех пробелов в строке на Python
  4. FixMyPC: Удаление и форматирование пробелов в строках с Python
  5. Pythonist.ru: Как в Python удалить пробелы из строки
  6. StackOverflow: How to strip all whitespace from string

Заключение

Python удалить пробелы из строки — задача на 5 минут: replace() для скорости, split+join для универсальности, regex для всего остального. Начните с sentence.replace(' ', ''), протестируйте на своих данных. Производительность важна в циклах — берите translate(). Теперь ваша функция my_handle заработает идеально, без единого пробела. Удачи в кодинге!

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