Методы строк для обработки текста
Уроки курсаМетоды строк для обработки текста
Методы очистки и изменения регистра: strip(), lower(), upper()
Самая частая ситуация при работе с пользовательским вводом — строка приходит с лишними пробелами по краям или в непредсказуемом регистре. Для этого у строк есть три метода.
strip(), lstrip(), rstrip()
strip() обрезает пробелы и символы переноса строки с обоих концов строки. Если нужно убрать только с одной стороны, есть lstrip() (левый край) и rstrip() (правый):
raw = ' Москва '
print(raw.strip()) # 'Москва'
print(raw.lstrip()) # 'Москва '
print(raw.rstrip()) # ' Москва'
Чаще всего нужен именно strip() — когда не знаешь, с какой стороны пришли лишние символы.
Можно передать в strip() аргумент — строку с символами, которые нужно обрезать:
path = '###раздел###'
print(path.strip('#')) # 'раздел'
Но для работы с вводом пользователя такая форма нужна редко; без аргумента — стандартный случай.
lower() и upper()
lower() переводит все буквы строки в нижний регистр, upper() — в верхний:
city = 'САНКТ-ПЕТЕРБУРГ'
print(city.lower()) # 'санкт-петербург'
abbr = 'python'
print(abbr.upper()) # 'PYTHON'
Практическая ценность lower() — регистронезависимое сравнение. Пользователь может написать «Да», «ДА», «да» или «дА», и все четыре варианта должны обрабатываться одинаково:
answer = input('Продолжить? ').strip().lower()
if answer == 'да':
print('Продолжаем')
else:
print('Останавливаемся')
Здесь strip() и lower() вызываются подряд — это называется цепочкой методов. Каждый метод применяется к результату предыдущего. Такой стиль читается естественно: сначала убрали пробелы, потом привели к нижнему регистру.
upper() реже используется для сравнения, но пригождается для форматирования вывода — например, когда нужно показать заголовок или аббревиатуру.
Оба метода работают корректно с кириллицей — Python обрабатывает Unicode, так что 'Привет'.lower() даст 'привет' без каких-либо дополнительных настроек.
