Python для новичковСтроки, модули и файлыМетоды строк для обработки текста

Методы строк для обработки текста

Уроки курсаМетоды строк для обработки текста

Функция нормализации пользовательского ввода

Теперь соберём всё изученное в одну функцию. Задача простая: пользователь вводит что-то через input(), а программа должна работать с этим стабильно — вне зависимости от того, написал ли он «Да», « ДА » или «да ».

Функция normalize() принимает сырую строку и последовательно применяет методы:

def normalize(text):
    text = text.strip()        # убираем пробелы по краям
    text = text.lower()        # приводим к нижнему регистру
    text = text.replace('ё', 'е')  # унифицируем символы, если нужно
    return text

Каждый шаг решает свою конкретную проблему. strip() убирает то, что пользователь случайно добавил нажатием пробела. lower() снимает вопрос о регистре. replace() здесь показан на примере классической русскоязычной проблемы: буква «ё» и «е» — разные символы, и без замены сравнение 'ёж' == 'еж' вернёт False.

Использовать функцию так:

raw = input('Введите город: ')
city = normalize(raw)

if city == 'москва':
    print('Столица!')
elif city == 'санкт-петербург':
    print('Северная столица!')
else:
    print(f'Город: {city}')

Без normalize() пришлось бы в каждом условии проверять все возможные варианты написания. С функцией — один вызов, и строка готова к сравнению.

Цепочку методов можно записать компактнее — через chaining:

def normalize(text):
    return text.strip().lower().replace('ё', 'е')

Эта запись делает то же самое: strip() возвращает новую строку, на ней сразу вызывается lower(), на её результате — replace(). Итог — одна строка кода вместо трёх. Оба варианта правильны; чем больше шагов, тем читабельнее пошаговая запись.

Функцию можно расширять под конкретную задачу. Например, если нужно ещё и убрать лишние внутренние пробелы:

def normalize(text):
    text = text.strip()
    text = text.lower()
    text = ' '.join(text.split())  # схлопываем множественные пробелы
    return text

print(normalize('  Санкт -  Петербург  '))  # 'санкт - петербург'

Здесь split() без аргумента разбивает строку по любым пробелам и выбрасывает пустые фрагменты, а ' '.join(...) собирает слова обратно через одиночный пробел. Паттерн ' '.join(text.split()) — стандартный способ нормализовать внутренние пробелы в строке.

Главная идея функции нормализации: вместо того чтобы разбрасывать strip() и lower() по всему коду, один раз описываешь правила очистки в одном месте и вызываешь normalize() там, где приходит внешний ввод.