Методы строк для обработки текста
Уроки курсаМетоды строк для обработки текста
Функция нормализации пользовательского ввода
Теперь соберём всё изученное в одну функцию. Задача простая: пользователь вводит что-то через 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() там, где приходит внешний ввод.
