Кот-наставник— Привет! Я кот-наставник, провожу людей через Python на платформе SkillPy. Текст в программах приходится крутить постоянно: привести к нижнему регистру, разрезать, склеить, вычистить пробелы.
— Для всего этого у строк есть встроенные методы. Один нюанс сразу запомни: они не меняют строку, а возвращают новую. Вокруг этого и построим разбор.
Методы строк в Python — это встроенные операции для обработки текста: сменить регистр, найти или заменить подстроку, разрезать строку на части и собрать обратно, убрать лишние пробелы. В этом гайде разберём главные методы строк с примерами: lower(), upper(), find(), replace(), split(), join(), strip(), проверки вроде isdigit(), а также срезы и цепочки методов. И сразу учтём ключевую особенность — неизменяемость строк.
Методы строк: коротко
Метод вызывается через точку после строки: "Текст".lower(). Строки неизменяемы, поэтому метод не меняет исходную строку, а возвращает новую — результат нужно сохранить в переменную. Вот главные методы одним взглядом:
text = " Привет, Мир "
print(text.strip()) # убрать пробелы по краям
print(text.strip().lower()) # + нижний регистр
print("a,b,c".split(",")) # разрезать в список
print("-".join(["2024", "01"])) # собрать из спискаПривет, Мир привет, мир ['a', 'b', 'c'] 2024-01
Главное про строки: они неизменяемы
Строку в Python нельзя изменить на месте — можно только создать на её основе новую. Поэтому любой метод строки возвращает новую строку, а оригинал оставляет прежним. Это источник самой частой ошибки новичков: вызвать метод и забыть сохранить результат.
s = "hello"
s.upper() # результат никуда не сохранён
print(s) # строка не изменилась
s = s.upper() # сохранили результат
print(s)hello HELLO
Первый s.upper() вычислил новую строку "HELLO", но её никто не сохранил — s осталась "hello". Только s = s.upper() записывает результат обратно. Про изменяемые и неизменяемые типы — в гайде Типы данных в Python: полный гайд для начинающих.
Метод строки — это функция, встроенная в объект строки и вызываемая через точку:
строка.метод(аргументы). Метод работает с содержимым строки и возвращает результат — новую строку, число или список.
Изменение регистра: lower, upper, capitalize, title
Четыре метода меняют регистр букв. Чаще всего нужен lower() — например, чтобы сравнивать ввод пользователя без учёта регистра.
print("Привет, Мир".lower())
print("Привет, Мир".upper())
print("привет".capitalize())
print("привет мир".title())привет, мир ПРИВЕТ, МИР Привет Привет Мир
Поиск подстроки: find и in
Проверить, есть ли подстрока, проще всего оператором in. А метод find() возвращает индекс первого вхождения — или -1, если подстроки нет.
text = "hello world"
print("world" in text) # есть ли подстрока
print(text.find("world")) # с какого индекса
print(text.find("python")) # нет подстрокиTrue 6 -1
Замена: replace
replace(старое, новое) возвращает новую строку, где все вхождения подстроки заменены. Оригинал, как всегда, не меняется.
date = "2024-01-15"
print(date.replace("-", "."))
print("да-да-да".replace("да", "нет"))2024.01.15 нет-нет-нет
Разделение и сборка: split и join
split() разрезает строку в список по разделителю, а join() делает обратное — собирает строку из списка. Это пара методов-близнецов, которые часто используют вместе.
# split: строка → список
fruits = "яблоко,банан,груша".split(",")
print(fruits)
# без аргумента split режет по любым пробелам
print("a b c".split())
# join: список → строка
print("-".join(["2024", "01", "15"]))['яблоко', 'банан', 'груша'] ['a', 'b', 'c'] 2024-01-15
Обрати внимание на синтаксис join: метод вызывается у строки-разделителя ("-"), а список передаётся аргументом. Про списки, которые получаются из split(), — в гайде Списки в Python: создание, методы и срезы.
Удаление пробелов: strip
strip() убирает пробелы (и переносы строк) по краям — незаменим при обработке пользовательского ввода, где легко случаются лишние пробелы.
raw = " привет "
print(f"[{raw.strip()}]")[привет]
Есть и «односторонние» версии: lstrip() убирает пробелы слева, rstrip() — справа. Квадратные скобки в примере добавлены только чтобы показать границы строки.
Проверки содержимого: isdigit, isalpha и другие
Методы-проверки возвращают True или False и удобны перед преобразованием строки в число или в условиях.
| Метод | Проверяет | True для |
|---|---|---|
| .isdigit() | только цифры | "12345" |
| .isalpha() | только буквы | "привет" |
| .isalnum() | буквы и цифры | "abc123" |
| .isspace() | только пробелы | " " |
age = "25"
if age.isdigit():
print(f"Возраст: {int(age)}")
else:
print("Это не число")Возраст: 25
isdigit() — надёжная проверка перед int(), которая спасает от падения на нечисловом вводе. Подробнее про преобразование типов — в гайде Типы данных в Python: полный гайд для начинающих.
Индексы и срезы строк
К символам строки можно обращаться по индексу, как к элементам списка, и брать срезы. Индексация начинается с 0, отрицательные индексы считают с конца.
word = "Python"
print(word[0]) # первый символ
print(word[-1]) # последний символ
print(word[:3]) # первые три
print(word[::-1]) # развернуть строкуP n Pyt nohtyP
Срез [::-1] — идиоматичный способ развернуть строку. Логика индексов и срезов та же, что у списков, — она подробно разобрана в гайде Списки в Python: создание, методы и срезы.
Цепочки методов
Раз каждый метод возвращает новую строку, вызовы можно составлять в цепочку: результат одного сразу передаётся следующему. Читается слева направо.
raw = " Hello World "
result = raw.strip().lower().replace(" ", "_")
print(result)hello_world
Цепочки удобны, но не увлекайся: если методов больше трёх-четырёх, код проще читать, разбив на шаги с промежуточными переменными.
Частые ошибки с методами строк
- Забыли сохранить результат
text.strip()сам по себе ничего не меняет — строки неизменяемы. Нужноtext = text.strip(). Это причина №1, почему «метод не работает». - Путают
find(-1)с индексомfind()вернул-1— значит подстроки нет. Если нужен просто факт наличия, операторinпонятнее и не даст спутать-1с реальным индексом. joinс числами"-".join([1, 2, 3])упадёт сTypeError:joinработает только со строками. Сначала преобразуй элементы:"-".join(str(n) for n in [1, 2, 3]).
Короткие ответы на вопросы про строки
Почему метод строки «не работает»?
Скорее всего, ты не сохранил результат. Строки неизменяемы, поэтому s.upper() возвращает новую строку, а старую не трогает. Нужно s = s.upper().
Как разбить строку на слова?
Методом split(). Без аргумента он режет по любым пробелам: "привет мир".split() даст ['привет', 'мир']. С аргументом — по указанному разделителю.
Как собрать строку из списка?
Методом join(), вызвав его у строки-разделителя: ", ".join(["a", "b"]) даст "a, b". Элементы списка должны быть строками.
Как проверить, что в строке только цифры?
Методом isdigit(): он вернёт True, если строка состоит только из цифр. Удобно проверять ввод перед преобразованием в число через int().
Главное про методы строк:
- Строки неизменяемы — сохраняй результат
Метод возвращает новую строку, оригинал не меняется.
s = s.upper() # без присваивания смысла нет - Регистр:
lower,upper,capitalize,title"Привет".lower() # привет splitиjoin— разрезать и собрать"a,b".split(",") # ['a', 'b'] ",".join(["a", "b"]) # a,bstripубирает пробелы по краям" hi ".strip() # hi- Методы можно составлять в цепочку
text.strip().lower()
Кот-наставник— Держи в голове одну мысль: строка неизменяема. Любой метод отдаёт новую строку, а не правит старую. Забыл присвоить — значит, ничего не изменилось.
— Возьми грязный ввод с пробелами и разным регистром, прогони через
.strip().lower()и посмотри, как он превращается в аккуратные данные. Это половина реальной работы с текстом.
Методы строк запоминаются пальцами
На SkillPy ты обрабатываешь текст сам: чистишь пробелы, режешь и склеиваешь строки, а AI-наставник подсказывает, где потерялся результат из-за неизменяемости. Он понимает твой код, а не сверяет с шаблоном.
