Menu
Русский

Строки в Python: f-строки, срезы и все методы строк, которые тебе пригодятся

Работа с текстом в Python — создание строк, f-строки, срезы и повседневные методы: split, join, replace, strip.

Текст, но с методами

Строка в Python — это последовательность символов, и ты будешь использовать строки чаще, чем любой другой тип. Любое имя, метка, сообщение, URL, путь к файлу и ответ от API рано или поздно живёт в строке.

Создать строку можно с помощью кавычек — одинарных, двойных или тройных:

main.py
Output
Click Run to see the output here.

Одинарные и двойные кавычки взаимозаменяемы. Используй те, которые избавляют от экранирования. "don't" выглядит чисто; 'don\'t' требует обратной косой.

Строки неизменяемы. Как только строка существует, изменить её символ на месте нельзя. Любая операция, которая выглядит как изменение строки, на самом деле возвращает новую строку. Именно поэтому ты будешь писать text = text.upper(), а не просто text.upper() — без присваивания новая строка в верхнем регистре просто потерялась бы.

Склейка и повторение

Два оператора делают большую часть соединительной работы:

main.py
Output
Click Run to see the output here.

+ склеивает строки. * повторяет строку. Оба возвращают новую строку.

Соединять много кусков через + быстро становится уродливо. Когда смешиваешь значения разных типов в одном сообщении, бери f-строки — про них следующий раздел.

f-строки: то, чем ты обычно будешь форматировать

Поставь f перед открывающей кавычкой, и строка превратится в шаблон. Всё, что внутри {...}, заменяется значением этого выражения:

main.py
Output
Click Run to see the output here.

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

f-строки также поддерживают спецификаторы формата после двоеточия — они управляют форматированием чисел, выравниванием и заполнением:

main.py
Output
Click Run to see the output here.

Эти спецификации — те же самые, что использует str.format(), и их стоит разок пробежать глазами, когда освоишься с базой. Для кода первого дня они не нужны.

Срезы: взять кусочек

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

main.py
Output
Click Run to see the output here.

Шаблон [start:stop:step] встречается и у списков, и у других последовательностей, так что несколько минут, потраченных на его освоение, окупятся везде.

Два момента стоит подчеркнуть:

  • Индекс stop не включается: word[0:2] берёт индексы 0 и 1, но не 2.
  • Отрицательные индексы отсчитываются с конца: -1 — последний символ, -2 — предпоследний и так далее.

Как развернуть строку

У строк нет метода .reverse() — они неизменяемые, — но срез с шагом -1 делает эту работу в одну строчку:

main.py
Output
Click Run to see the output here.

word[::-1] читается как «от начала до конца, шагом -1». Результат — совершенно новая строка; исходная остаётся нетронутой. Если нужно пройти по символам в обратном порядке без создания новой строки, reversed(word) возвращает ленивый итератор.

Как узнать длину строки

len(text) возвращает количество символов:

main.py
Output
Click Run to see the output here.

Имей в виду, что len считает кодовые точки Unicode, а не байты. len("café") равно 4, а не 5, даже если UTF-8-кодировка занимает больше байт, — и обычно это именно то, что тебе нужно.

Как проверить, содержит ли строка подстроку

Оператор in — идиоматичная проверка, и читается он как английский:

main.py
Output
Click Run to see the output here.

Для проверки без учёта регистра сначала приведи обе стороны к одному виду:

main.py
Output
Click Run to see the output here.

Если нужна позиция, а не просто да/нет, используй .find() — он возвращает индекс или -1, если подстроки нет.

Распространённые методы строк

У строк десятки методов. Вот та горстка, к которой будешь обращаться постоянно:

main.py
Output
Click Run to see the output here.

Разбиение и склейка:

main.py
Output
Click Run to see the output here.

.split(separator) превращает строку в список. separator.join(list_of_strings) склеивает её обратно. Эти два метода берут на себя непропорционально большую долю реальной работы со строками.

Ещё одна полезная пара:

main.py
Output
Click Run to see the output here.

Это парсер однострочной строки конфига, написанный в три строчки. Маленькие строки, большой эффект.

Проверяем, что внутри

Несколько методов возвращают булевы значения — удобно для условий в if:

main.py
Output
Click Run to see the output here.

Используй их умеренно — они не всегда корректно обрабатывают Unicode-нюансы. Для всего, что выходит за пределы ASCII, лучше полагаться на модуль re или unicodedata.

Экранирование спецсимволов

Некоторые символы требуют обратной косой, чтобы попасть в строку:

main.py
Output
Click Run to see the output here.

Если пишешь путь Windows или регулярное выражение, пригодятся «сырые» строки. Поставь r перед кавычкой — и обратные косые перестают быть служебными:

main.py
Output
Click Run to see the output here.

Строки повсюду, так что делай их читаемыми

Три привычки, которые не дают коду с кучей строк превратиться в кашу:

  1. Используй f-строки для интерполяции. Не сшивай + разные типы.
  2. Не забывай присваивать при «изменении». text = text.strip(), а не просто text.strip().
  3. Бери .split() и .join() вместо ручных циклов для парсинга или сборки текста. Они быстрее, понятнее и с ними сложнее ошибиться.

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

Часто задаваемые вопросы

Что такое f-строка в Python?

f-строка — это строковый литерал с префиксом f, в котором всё, что заключено в {...}, заменяется значением соответствующего выражения. Пример: f"Привет, {name}!" подставляет текущее значение name в строку во время выполнения.

Как развернуть строку в Python?

Используй срез с шагом -1: reversed_text = original[::-1]. Это вернёт новую строку с теми же символами в обратном порядке. Исходная строка останется нетронутой, потому что строки в Python неизменяемые.

Как разбить строку в Python?

Вызови .split() у строки. Без аргументов метод разбивает по любым пробельным символам: "a b c".split() вернёт ['a', 'b', 'c']. Можно передать конкретный разделитель: "a,b,c".split(",") вернёт ['a', 'b', 'c'].

Изменяемы ли строки в Python?

Нет. Строки неизменяемые — как только строка создана, поменять её символы на месте нельзя. Каждый метод, который «меняет» строку, на самом деле возвращает новую. Поэтому ты и видишь шаблон text = text.strip() — переменной присваивается новое значение.

Как склеить строки в Python?

Используй + для соединения двух строк: "hello" + " " + "world". Чтобы подставить значение внутрь предложения, лучше взять f-строку: f"Привет, {name}". Для склейки множества кусков из списка используй separator.join(pieces) — это быстрее и читается лучше, чем цепочка из +.

Как узнать длину строки в Python?

Вызови встроенную функцию len(text). Она возвращает количество символов (кодовых точек Unicode), поэтому len("café") равно 4. Чтобы получить длину в байтах, сначала закодируй: len(text.encode("utf-8")).

Учитесь программировать с Coddy

НАЧАТЬ