Пробел в Python: числовые коды и методы работы

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

Код пробела в Python: основные способы получения и проверки

Символ пробела имеет числовой код 32 (0x20) в таблице ASCII. В Python для получения кода символа используется функция ord(), для обратного преобразования - chr(). Помимо обычного пробела существуют другие пробельные символы (табуляция, неразрывный пробел), которые также могут встречаться в строках. Ниже рассмотрены наиболее эффективный подход и альтернативные варианты.

Основное решение: ord(' ')

Для получения кода обычного пробела достаточно вызвать ord(' '). Результат - целое число 32. Это наиболее прямой и быстрый способ.


code = ord(' ')
print(code)  # 32
  

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

32
  

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

Проблема: если передать пустую строку, возникнет ошибка TypeError. Функция ord() принимает только один символ.


# Ошибочный код
# code = ord('')  # TypeError: ord() expected a character, but string of length 0 found
    

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

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

Неразрывный пробел (non-breaking space) имеет код 160 (0xA0). Для его получения можно использовать управляющую последовательность \xa0 или явно вставить символ.


nbsp = chr(160)
code = ord(nbsp)
print(f'Код неразрывного пробела: {code}')  # 160
  

Print split python (использование split с print в python)

Код неразрывного пробела: 160
  

код пробела python (код символа пробела в python)

Типичная ошибка: путать обычный пробел (32) с неразрывным (160). При сравнении строк может возникнуть неожиданное поведение, если в тексте используется неразрывный пробел.

Как проверить, является ли символ пробельным?

Метод str.isspace() возвращает True для всех символов, которые в Unicode считаются пробельными (обычный пробел, табуляция, перевод строки, неразрывный пробел и др.). Однако он не возвращает числовой код.


char = ' '
print(char.isspace())  # True
char = '\t'
print(char.isspace())  # True
char = 'a'
print(char.isspace())  # False
  

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

True
True
False
  

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

Проблема: метод isspace() не различает виды пробелов. Если нужно отличить обычный пробел от табуляции, следует сравнивать код символа напрямую.

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

Для замены всех пробельных символов (в том числе неразрывных) удобно использовать регулярные выражения из модуля re или метод translate с таблицей замен.


import re

text = 'Привет\tмир!\nЭто\xa0тест.'
# Замена всех пробельных символов на обычный пробел
normalized = re.sub(r'\s+', ' ', text)
print(repr(normalized))
  

Python найти строку (поиск подстроки в строке python)

'Привет мир! Это тест.'
  

Python пробелы (пробелы в python)

Типичная ошибка: использование str.replace(' ', '_') заменит только обычные пробелы, но не табуляцию или неразрывные пробелы. Для полной очистки следует применять регулярные выражения или цикл с проверкой isspace().

Как получить список кодов всех символов в строке?

Функция ord() применяется к каждому символу. Для строки можно использовать генератор списка.


s = 'A B'
codes = [ord(ch) for ch in s]
print(codes)  # [65, 32, 66]
  

символ пробел python (символ пробела в python)

[65, 32, 66]
  

Проблема: если строка содержит символы вне BMP (дополнительные плоскости Unicode), ord() вернет код суррогатной пары? Нет, Python 3 использует Unicode-строки, и ord() корректно обрабатывает любые символы (в том числе эмодзи) как один символ.

- Python длина строки (длина строки в python)

Расширенные примеры работы с пробелами

Ниже приведены более сложные сценарии, которые могут пригодиться при обработке текстов.

1. Определение типа пробела по его коду

Пример

def classify_space(ch):
    code = ord(ch)
    if code == 32:
        return 'обычный пробел'
    elif code == 160:
        return 'неразрывный пробел'
    elif code == 9:
        return 'табуляция'
    elif code == 10:
        return 'перевод строки'
    elif code == 13:
        return 'возврат каретки'
    else:
        return 'другой пробельный символ'

chars = [' ', '\xa0', '\t', '\n', '\r']
for ch in chars:
    print(f'{repr(ch)} -> {classify_space(ch)}')
' ' -> обычный пробел
'\xa0' -> неразрывный пробел
'\t' -> табуляция
'\n' -> перевод строки
'\r' -> возврат каретки

2. Удаление всех пробелов из строки с сохранением других символов

Пример

text = 'Привет, мир! Как дела?'
# Удалить только пробелы (код 32), не трогая знаки препинания
no_spaces = ''.join(ch for ch in text if ord(ch) != 32)
print(no_spaces)  # Привет,мир!Какдела?
Привет,мир!Какдела?

3. Замена всех видов пробелов на один стандартный

Пример

import re

text = 'Строка\tс\xa0разными\nпробелами.'
# Шаблон \s+ заменяет любую последовательность пробельных символов на один пробел
cleaned = re.sub(r'\s+', ' ', text)
print(cleaned)  # Строка с разными пробелами.
Строка с разными пробелами.

4. Проверка, содержит ли строка только пробелы

Пример

def is_whitespace_only(s):
    return all(ch.isspace() for ch in s)

print(is_whitespace_only('   '))        # True
print(is_whitespace_only('\t\n '))      # True
print(is_whitespace_only(' a '))        # False
True
True
False

5. Получение кода пробела из строки, введенной пользователем

Пример

user_input = input('Введите символ: ')
if len(user_input) == 1:
    code = ord(user_input)
    print(f'Код символа {user_input!r} равен {code}')
else:
    print('Введите ровно один символ')
Введите символ:  
Код символа ' ' равен 32

6. Использование chr() для вставки пробела по коду

Пример

# Создание строки из кодов
codes = [72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33]
message = ''.join(chr(c) for c in codes)
print(message)  # Hello, World!
Hello, World!

7. Различие между пробелами при сравнении строк

Пример

normal_space = ' '
nbsp = chr(160)
print(normal_space == nbsp)  # False
print(ord(normal_space), ord(nbsp))  # 32 160
False
32 160

Распространенная ошибка: при копировании текста из веб-страниц или документов часто появляются неразрывные пробелы, которые визуально неотличимы от обычных. Это приводит к тому, что строки не совпадают при сравнении или регулярные выражения не находят совпадений. Рекомендуется нормализовать пробелы перед обработкой.

Код символа пробела в Python - comments

En
код пробела python (python)