Как удалить все пробелы из строки в Python: методы
Узнайте, как удалить все пробелы из строки в Python: replace(), split() + join(), regex и translate(). Полное руководство по python удалить пробелы, включая сравнение производительности и примеры кода для строк без пробелов.
Как удалить все пробелы из строки в Python, включая пробелы между словами?
Я хочу удалить все пробелы из строки, включая пробелы в начале и в конце, а также между словами. У меня есть следующий код на Python:
def my_handle(self):
sentence = ' hello apple '
sentence.strip()
Однако метод strip() удаляет пробелы только в начале и в конце строки. Как можно удалить все пробелы, включая пробелы между словами?
Чтобы удалить все пробелы из строки в Python, включая те, что между словами, используйте sentence.replace(' ', '') — это самый простой способ заменить все пробелы на пустоту. Альтернатива — ''.join(sentence.split()), которая разбивает строку по любым пробелам (включая табы и переносы) и склеивает обратно без них. Ваш код с strip() работает только на краях, так что для полного удаления пробелов из строки Python нужны эти методы.
Содержание
- Почему strip() не подходит
- Удалить все пробелы методом replace()
- Строка Python без пробелов через split() и join()
- Регулярные выражения для сложных случаев
- Производительность: translate() и сравнение методов
- Частые ошибки и советы
- Источники
- Заключение
Почему strip() не подходит
strip() — отличный инструмент, но только для краёв. Возьмём вашу строку ' hello apple ': после strip() останется 'hello apple' с пробелом посередине. А вы хотите 'helloapple', верно?
Метод убирает пробелы, табы и переносы только спереди и сзади. Между словами? Ни в зуб ногой.
Поэтому для удаления всех пробелов в строке Python переходите к полным методам. В руководстве на Timeweb чётко объясняют: strip() для границ, а для всего — другие приёмы.
Удалить все пробелы методом replace()
Самый прямолинейный вариант — replace(). Он ищет все ' ' и меняет на ''.
sentence = ' hello apple world\t'
sentence = sentence.replace(' ', '') # 'helloappleworld'
print(sentence)
Видите? Пробелы между словами ушли, включая множественные. Работает быстро на простых строках.
Но стоп: replace() ловит только обычный пробел ' ', а не табы \t или \n. Если строка из файла с переносами — добавьте:
sentence = sentence.replace(' ', '').replace('\t', '').replace('\n', '')
Или цепочкой. В статье на Sky.pro подчёркивают: replace() идеален для строки Python без пробелов именно между словами.
А что насчёт Unicode-пробелов? Редко, но бывает. Тогда лучше regex, о нём ниже.
Строка Python без пробелов через split() и join()
Хотите универсальности? split() разобьёт по любому whitespace (\s — пробелы, табы, \n), а join() склеит без разделителя.
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.
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(). Он использует таблицу символов, супербыстрый.
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.
# ❌ Неправильно
sentence.strip()
# ✅ Правильно
sentence = sentence.strip()
Множественные пробелы? Все методы справятся.
Пробелы в списке строк? Цикл: [s.replace(' ', '') for s in lines].
Задача: посчитать пробелы перед удалением? sentence.count(' ').
Тестируйте на реальных данных. В ru.StackOverflow обсуждают edge-кейсы: пустая строка → пустая.
Источники
- ru.StackOverflow: Как удалить все пробелы из строки в Python
- Timeweb: Как удалить пробелы из строки в Python
- Sky.pro: Удаление всех пробелов в строке на Python
- FixMyPC: Удаление и форматирование пробелов в строках с Python
- Pythonist.ru: Как в Python удалить пробелы из строки
- StackOverflow: How to strip all whitespace from string
Заключение
Python удалить пробелы из строки — задача на 5 минут: replace() для скорости, split+join для универсальности, regex для всего остального. Начните с sentence.replace(' ', ''), протестируйте на своих данных. Производительность важна в циклах — берите translate(). Теперь ваша функция my_handle заработает идеально, без единого пробела. Удачи в кодинге!