Очистка строк от пробельных символов в языке Python

Раздел: Стандартные типы данных -> Обработка строк

Основные способы удаления пробелов из строки

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

Как удалить все пробелы с помощью метода replace?

Метод str.replace() позволяет заменить все вхождения подстроки. Для удаления всех символов пробела достаточно заменить их на пустую строку.

text = "Hello World Python"
result = text.replace(' ', '')
print(result)

заменить символ на другой python (замена символа в строке на python)

HelloWorldPython

Strip строки python (метод strip для строк в python)

Типичные ошибки: replace удаляет только символ пробела (U+0020), но не табуляцию, перевод строки или неразрывный пробел. Если в строке есть другие пробельные символы, они останутся.

Как удалить пробелы в начале и конце строки?

Методы strip(), lstrip(), rstrip() удаляют все пробельные символы (включая табуляцию, переводы строк) с соответствующих сторон. Используется для очистки пользовательского ввода.

text = "   Hello World!   \n"
result = text.strip()
print(repr(result))

сколько чисел в строке python (подсчёт количества чисел в строке в python)

'Hello World!'

Python знак в строке (проверка наличия символа в строке python)

Проблемы: strip не удаляет внутренние пробелы. Если нужно убрать только пробелы, но сохранить переводы строк, рекомендуется использовать rstrip('\n') или замену.

Как удалить лишние пробелы, оставив только одинарные между словами?

Разбиение строки по пробельным символам с помощью split() (без аргументов разбивает по любым пробельным символам) и последующая сборка с одним пробелом через join().

text = "Python   is   awesome"
result = " ".join(text.split())
print(result)

сколько символов в строке python (подсчет количества символов в строке в python)

Python is awesome

Python убрать пробелы (удаление пробелов из строки в python)

Ошибки: если в строке есть неразрывные пробелы ( ), split() может не обработать их как разделители. Для точного удаления лишних пробелов только одного типа можно применить replace(' ', ' ') в цикле или регулярное выражение.

Как удалить все виды пробельных символов (табуляция, перенос, неразрывный пробел)?

Библиотека re позволяет с помощью регулярного выражения \s+ найти все пробельные символы и заменить их на пустую строку.

import re
text = "Hello\t World\n Python\u00A0!"
result = re.sub(r'\s+', '', text)
print(result)

числа в строке python задача (задача: числа в строке в python)

HelloWorldPython!

Python количество слов (подсчет количества слов в python)

Сложности: \s включает в себя все символы Unicode, считающиеся пробельными, что может быть избыточно. Если нужно удалить только определённые символы (например, только пробел и табуляцию), можно составить свой класс символов, например [ \t].

Как удалить только конкретные символы пробелов (например, обычный пробел и неразрывный)?

Метод str.translate() с таблицей, созданной str.maketrans(), позволяет заменить или удалить заданные символы. В таблицу следует передать словарь, где ключи - коды символов, а значения - None для удаления.

text = "Hello\u00A0World"  # неразрывный пробел
remove = {32: None, 160: None}  # 32 - пробел, 160 - неразрывный
result = text.translate(remove)
print(result)

Python слово в строке (поиск слова в строке python)

HelloWorld

Предостережения: нужно знать коды символов. Для всех пробельных Unicode лучше использовать регулярное выражение. translate обычно быстрее для одиночных символов.

Дополнительные примеры и нестандартные решения

Удаление пробелов через filter и join

Функция filter() отбирает символы, не равные пробелу. Подходит для удаления одного символа, но не для нескольких.

Пример
text = "A B C"
result = ''.join(filter(lambda x: x != ' ', text))
print(result)
ABC

Можно заменить lambda на предопределённую функцию, но для ускорения лучше использовать генератор списка.

Удаление пробелов из байтовой строки

Если данные представлены в виде bytes, пробелы также можно удалить заменой байтов.

Пример
text = b"Hello World"
result = text.replace(b' ', b'')
print(result.decode())
HelloWorld

Удаление всех пробелов, кроме переводов строки

Иногда требуется сохранить переносы строк и удалить остальные пробелы. Для этого можно применить регулярное выражение с отрицанием.

Пример
import re
text = "Hello\nWorld   Foo"
# Удалить все пробелы, кроме \n
result = re.sub(r'[^\S\n]+', '', text)  # [^\S\n] - любой пробел, не являющийся \n
print(repr(result))
'Hello\nWorldFoo'

Удаление всех Unicode-пробелов с помощью unicodedata

Модуль unicodedata позволяет классифицировать символы. Можно отфильтровать все, у которых категория начинается с 'Z' (пробельные разделители).

Пример
import unicodedata
text = "Hello\u2003\u00A0World"  # em-space и неразрывный
result = ''.join(c for c in text if unicodedata.category(c) != 'Zs')
print(repr(result))
'HelloWorld'

Удаление пробелов из строки в Python - comments

En
Python убрать пробелы (python)