Урок 5 из 8 · 20 мин · обновлено

Строки: срезы, методы и f-строки

Как достать из строки нужный символ или кусок, привести текст в порядок готовыми методами и удобно собрать фразу из переменных.

Строка — это последовательность символов

Каждый символ строки имеет свой номер — индекс. Нумерация начинается с нуля:

Python
word = "Python"
print(word[0])    # P
print(word[1])    # y
print(word[-1])   # n — последний символ
print(len(word))  # 6 — длина строки

Отрицательные индексы считают с конца: -1 — последний символ, -2 — предпоследний. Это удобно, когда длина строки заранее неизвестна.

Срезы

Срез берёт кусок строки: строка[начало:конец]. Как и в range(), конец не входит:

Python
phone = "+79161234567"
print(phone[0:2])   # +7
print(phone[2:5])   # 916 — код оператора
print(phone[-4:])   # 4567 — последние 4 цифры
print(phone[::-1])  # 76543216197+ — строка задом наперёд

Если начало или конец не указан, срез идёт от начала или до конца строки.

Полезные методы

Метод — это функция, которая «принадлежит» значению и вызывается через точку. У строк их много, но в начале хватит этих:

Метод Что делает Пример Результат
strip() убирает пробелы по краям " да ".strip() "да"
lower(), upper() меняет регистр "Да".upper() "ДА"
replace(a, b) заменяет одно на другое "8-916".replace("-", "") "8916"
split() режет строку на список "a b c".split() ["a", "b", "c"]
join() склеивает список в строку ", ".join(["a", "b"]) "a, b"
startswith() проверяет начало "+7916".startswith("+7") True

Важная особенность: строки неизменяемы. Метод не меняет исходную строку, а возвращает новую — поэтому результат сохраняют в переменную:

Python
name = "  анна  "
name.strip()          # результат никуда не сохранён — name не изменилась
name = name.strip()   # теперь name == "анна"

Методы можно вызывать цепочкой — каждый следующий работает с результатом предыдущего:

Python
email = "  Anna@Mail.RU "
print(email.strip().lower())   # anna@mail.ru

f-строки

Собирать фразу из кусков через запятые неудобно. Для этого есть f-строки — строки с буквой f перед кавычками, внутри которых в фигурных скобках можно подставлять значения:

Python
name = "Анна"
total = 1250.5

print(f"{name}, ваш заказ на {total} ₽ принят")
print(f"Итого со скидкой: {total * 0.9:.2f} ₽")

Результат:

Результат
Анна, ваш заказ на 1250.5 ₽ принят
Итого со скидкой: 1125.45 ₽

Запись :.2f после выражения означает «показать два знака после запятой».

Попробуйте сами. Пользователь ввёл имя небрежно: raw = " иВАН ". Приведите его к виду Иван и выведите приветствие Здравствуйте, Иван! через f-строку. Подсказка: у строк есть метод capitalize() — он делает первую букву заглавной, а остальные строчными.

Решение
Python
raw = "   иВАН   "
name = raw.strip().capitalize()
print(f"Здравствуйте, {name}!")

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

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что выведет print('python'[0])?

  2. Что выведет print('python'[-1])?

  3. Переменная email = ' Anna@Mail.ru '. Что вернёт email.strip().lower()?

  4. Как с помощью f-строки вывести «Итого: 450 ₽», если price = 450?