SkillPy

Методы строк в Python: split, join, replace и другие

Время чтения15 мин чтения
Опубликовано25 сентября 2026 г.
Легко
Python
Строки
Методы
Начинающим
Методы строк в Python: split, join, replace и другие
Кот-наставник

— Привет! Я кот-наставник, провожу людей через 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().

Главное про методы строк:

  1. Строки неизменяемы — сохраняй результат

    Метод возвращает новую строку, оригинал не меняется.

    s = s.upper()  # без присваивания смысла нет
  2. Регистр: lower, upper, capitalize, title
    "Привет".lower()  # привет
  3. split и join — разрезать и собрать
    "a,b".split(",")      # ['a', 'b']
    ",".join(["a", "b"])  # a,b
  4. strip убирает пробелы по краям
    "  hi  ".strip()  # hi
  5. Методы можно составлять в цепочку
    text.strip().lower()
Кот-наставник

— Держи в голове одну мысль: строка неизменяема. Любой метод отдаёт новую строку, а не правит старую. Забыл присвоить — значит, ничего не изменилось.

— Возьми грязный ввод с пробелами и разным регистром, прогони через .strip().lower() и посмотри, как он превращается в аккуратные данные. Это половина реальной работы с текстом.

Методы строк запоминаются пальцами

На SkillPy ты обрабатываешь текст сам: чистишь пробелы, режешь и склеиваешь строки, а AI-наставник подсказывает, где потерялся результат из-за неизменяемости. Он понимает твой код, а не сверяет с шаблоном.