Методы строк в Python: шпаргалка по 15 методам с примерами

Разбираем 15 методов строк Python с примерами и выводом интерпретатора: split и join, strip, replace, поиск через find и index, смену регистра и проверки isdigit и isalpha.

Отдельно собраны частые ошибки: split по пробелу вместо split без аргумента, strip со словом вместо набора символов, join со списком чисел.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 2976 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3630 экспертных мнений Подписаться на Телеграм-канал
Обложка: Методы строк в Python: шпаргалка по 15 методам с примерами

Методы строк в Python — это готовые функции, которые вызываются через точку после строки: text.split(), text.strip(), text.replace("а", "б"). Они режут текст на части, склеивают его обратно, убирают лишние пробелы, ищут подстроки и меняют регистр.

Главное правило одно: метод не меняет исходную строку, а возвращает новую. Поэтому результат нужно сохранить в переменную. Ниже разобраны 15 самых ходовых методов, у каждого есть пример и вывод интерпретатора. Если вы только знакомитесь с языком, начните с обзора «Язык Python: стоит ли учить».

CheckroiCheckroiПодборка курсов по Python566 курсов • 51 школаСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Что такое строка в Python и почему метод не меняет её

Рой разбирает строку текста на отдельные слова за ноутбуком

Строка в Python — это последовательность символов в кавычках: 'питон', "питон" или """питон""". В документации Python строки названы неизменяемыми последовательностями кодовых точек Юникода, проще говоря символов.

Кроме методов, со строкой работают встроенные функции и операторы. Их стоит знать вместе с методами:

  • len("питон") возвращает длину, здесь 5;
  • "питон"[0] даёт первый символ 'п', а "питон"[-1] последний 'н';
  • "питон"[1:4] вырезает срез 'ито', правая граница в него не входит;
  • "py" + "thon" склеивает строки, "ха" * 3 повторяет: 'хахаха'.

Неизменяемость видно сразу, если попробовать заменить одну букву:

s = "питон"
s[0] = "П"
# TypeError: 'str' object does not support item assignment

Методы работают так же. Вызов s.upper() строит новую строку и отдаёт её, а s остаётся прежней:

s = "питон"
s.upper()
print(s)        # питон
s = s.upper()
print(s)        # ПИТОН

Чтобы увидеть результат, его нужно напечатать через print(), с этой функции начинается первая программа на Python. Решение здесь простое: всегда присваивайте результат. Либо в ту же переменную, либо в новую. Методы можно вызывать цепочкой, каждый следующий получает строку от предыдущего:

print("  Привет, МИР!  ".strip().lower().replace("мир", "Python"))
# привет, Python!

Шпаргалка: 15 методов строк в одной таблице

Таблица для быстрого поиска. Подробности и подводные камни каждого метода разобраны в разделах ниже.

Метод Что делает Пример Результат
split() делит строку на список "a,b".split(",") ['a', 'b']
join() склеивает список в строку "-".join(["a", "b"]) 'a-b'
strip() убирает пробелы по краям " a ".strip() 'a'
replace() заменяет подстроку "кот".replace("к", "р") 'рот'
find() ищет позицию подстроки "питон".find("то") 2
index() то же, но с ошибкой при неудаче "питон".index("то") 2
count() считает вхождения "мама".count("а") 2
startswith() проверяет начало "файл.txt".startswith("ф") True
endswith() проверяет конец "файл.txt".endswith(".txt") True
lower() переводит в нижний регистр "ПиТоН".lower() 'питон'
upper() переводит в верхний регистр "питон".upper() 'ПИТОН'
title() делает каждое слово с заглавной "анна каренина".title() 'Анна Каренина'
isdigit() проверяет, что в строке только цифры "2026".isdigit() True
isalpha() проверяет, что в строке только буквы "Привет".isalpha() True
zfill() дополняет нулями слева "7".zfill(3) '007'

Всего у строки в Python 3.14 сорок семь публичных методов. Полный список печатает команда dir(str) в интерпретаторе (если Python ещё не стоит, вот как его скачать и установить), справку по любому методу даёт help(str.split). Остальные встречаются реже, а несколько полезных родственников (rsplit(), casefold(), removeprefix()) упомянуты рядом с основными.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

split(): что делает и как разбить строку на части

Метод split() делит строку по разделителю и возвращает список кусков. Разделитель передаётся первым аргументом. Если его не указать, Python режет по пробелам, табуляциям и переводам строк.

"яблоко,груша,слива".split(",")
# ['яблоко', 'груша', 'слива']

"  раз  два   три ".split()
# ['раз', 'два', 'три']

split() и split(" ") работают по-разному

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

"  раз  два   три ".split(" ")
# ['', '', 'раз', '', 'два', '', '', 'три', '']

Так же ведёт себя любой явный разделитель. Две запятые подряд дают пустой элемент: "a,,b".split(",") вернёт ['a', '', 'b']. Это поведение описано в справке по str.split.

Ограничить число разрезов и резать справа

Второй аргумент maxsplit задаёт, сколько раз резать. Метод rsplit() делает то же самое, но начинает справа. Так удобно отделять расширение файла или последний кусок пути:

"2026-10-15".split("-", 1)
# ['2026', '10-15']

"путь/к/файлу.txt".rsplit("/", 1)
# ['путь/к', 'файлу.txt']

Разбить текст по строкам и найти разделитель один раз

  • splitlines() делит текст по переводам строк и понимает разные их виды: "первая\nвторая\r\nтретья".splitlines() вернёт ['первая', 'вторая', 'третья'].
  • partition(",") режет только по первому разделителю и всегда возвращает кортеж из трёх частей: до, сам разделитель и после.
  • Пустая строка тоже ведёт себя по-разному: "".split() даёт [], а "".split(",") даёт [''].
  • Несколько разных разделителей за раз split() не понимает. Для этого есть re.split() из модуля регулярных выражений: re.split(r"[,;]", "a,b;c") вернёт ['a', 'b', 'c'].

Про то, как потом работать с полученным списком, есть отдельные инструкции: как добавить элемент в список, как удалить элемент и как отсортировать список.

join(): как склеить список в строку

Карточки со словами соединяются в одну строку, как бусины на нитке

join() делает обратное split(): собирает список строк в одну строку. Метод вызывается у разделителя, а список передаётся аргументом. Сначала это выглядит непривычно, зато разделитель виден сразу:

", ".join(["яблоко", "груша", "слива"])
# 'яблоко, груша, слива'

"".join(["п", "и", "т", "о", "н"])
# 'питон'

Подвох в типах. Если в списке есть хотя бы одно число, join() падает с ошибкой, и документация это прямо оговаривает:

"-".join([2026, 10, 15])
# TypeError: sequence item 0: expected str instance, int found

"-".join(map(str, [2026, 10, 15]))
# '2026-10-15'

Решение: перед склейкой переведите элементы в строки через map(str, ...). Чтобы собрать многострочный текст, используйте "\n".join(...).

strip(), lstrip() и rstrip(): убрать пробелы и лишние символы

Метод strip() срезает пробелы, табуляции и переводы строк с обоих концов. lstrip() чистит только слева, rstrip() только справа. Внутри строки пробелы остаются на месте.

"   привет   ".strip()    # 'привет'
"   привет   ".lstrip()   # 'привет   '
"   привет   ".rstrip()   # '   привет'
"\tтекст\n".strip()       # 'текст'

Аргумент у strip() задаёт не слово, а набор символов. Python убирает с краёв любые из них, пока не встретит чужой символ. Из-за этого можно случайно отрезать лишнее:

"---заголовок---".strip("-")
# 'заголовок'

"www.example.com".strip("w.moc")
# 'example'

Если нужно убрать именно приставку или окончание целиком, с Python 3.9 есть removeprefix() и removesuffix(). Их добавили предложением PEP 616:

"www.example.com".removeprefix("www.")   # 'example.com'
"report.txt".removesuffix(".txt")        # 'report'

replace(): заменить подстроку в строке

replace(old, new) заменяет все вхождения подстроки. Третий аргумент ограничивает число замен, считая слева:

"кот и кот".replace("кот", "пёс")      # 'пёс и пёс'
"кот и кот".replace("кот", "пёс", 1)   # 'пёс и кот'

Замены удобно ставить цепочкой. Например, так телефон из формы превращается в одну строку цифр:

"8 (999) 123-45-67".replace(" ", "").replace("(", "").replace(")", "").replace("-", "")
# '89991234567'

replace() различает регистр: "Кот".replace("кот", "пёс") вернёт 'Кот' без изменений. Для замены по шаблону или без учёта регистра нужен модуль re.

Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Поиск в строке: find(), index(), count(), startswith() и endswith()

Если нужно просто узнать, есть ли подстрока в тексте, методы не нужны. Хватит оператора in: "грам" in "программирование" вернёт True. Про in и другие знаки есть разбор операторов Python.

Методы поиска нужны, когда важна позиция или количество:

Вызов Результат Что произошло
"программирование".find("грам") 3 подстрока начинается с индекса 3
"программирование".find("java") -1 не нашлось, ошибки нет
"программирование".index("java") ValueError не нашлось, программа падает
"программирование".rfind("р") 9 последнее вхождение
"программирование".count("р") 3 три буквы «р»
"ааа".count("аа") 1 перекрывающиеся вхождения не считаются

Выбор между find() и index() простой. Если подстроки может не быть и это нормально, берите find() и проверяйте -1. Если подстрока обязана быть, берите index(): ошибка сразу покажет, что данные пришли не те.

Проверку на -1 удобно уложить в одну строку тернарным оператором: pos = s.find("x"); print("нет" if pos == -1 else pos).

Методы startswith() и endswith() проверяют начало и конец строки. Им можно передать кортеж вариантов, это короче цепочки из or:

"report.pdf".endswith((".pdf", ".docx"))         # True
"https://checkroi.ru".startswith("https://")     # True

Регистр: lower(), upper(), title(), capitalize() и casefold()

Сравнение строк в Python учитывает регистр: "Python" == "python" даёт False. Поэтому перед сравнением ввод обычно приводят к одному регистру.

  • lower() и upper() переводят всю строку в нижний или верхний регистр. Кириллица и буква «ё» обрабатываются правильно: "Ёлка".lower() вернёт 'ёлка'.
  • title() делает заглавной первую букву каждого слова: 'Анна Каренина'.
  • capitalize() поднимает только первую букву строки: 'Анна каренина'.
  • swapcase() меняет регистр на противоположный: "ПиТоН" станет 'пИтОн'.

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

У title() есть известная странность. Апостроф он считает границей слова, поэтому "it's python".title() даёт "It'S Python". В справке по title() как вариант без этой проблемы названа функция string.capwords(): она делит слова только по пробелам.

Для сравнения без учёта регистра есть casefold(). Он агрессивнее lower(): немецкую «ß» превращает в «ss». Для русского текста разницы обычно нет, но для многоязычных данных casefold() надёжнее:

"Straße".lower()                                 # 'straße'
"Straße".casefold()                              # 'strasse'
"Straße".casefold() == "STRASSE".casefold()      # True

Проверки содержимого: isdigit(), isalpha() и другие

Методы на is отвечают True или False и нужны для проверки ввода. Пустая строка почти во всех таких проверках даёт False, исключения только isascii() и isprintable().

"2026".isdigit()        # True
"-5".isdigit()          # False: минус не цифра
"3.14".isdigit()        # False: точка не цифра
"Привет".isalpha()      # True: кириллица считается буквами
"Привет мир".isalpha()  # False: пробел не буква
"python3".isalnum()     # True: буквы и цифры
"   ".isspace()         # True
"ПРИВЕТ".isupper()      # True

Главная ловушка: проверить число через isdigit() и сразу позвать int(). isdigit() пропускает надстрочные цифры вроде «²», и тогда int() падает:

"²".isdigit()     # True
"²".isdecimal()   # False
int("²")          # ValueError: invalid literal for int() with base 10: '²'

Решение: для проверки перед int() берите isdecimal(). По справке по isdecimal(), он пропускает только символы, из которых можно составить число в десятичной системе. Отрицательные и дробные числа проще ловить через try и except ValueError, чем методами строки.

Выравнивание: zfill(), center(), ljust() и rjust()

Эти методы дополняют строку до нужной длины. Чаще всего нужен zfill(): он дописывает нули слева и не ломает знак числа.

"7".zfill(3)                     # '007'
"-7".zfill(3)                    # '-07'
"меню".center(12, "*")           # '****меню****'
"цена".ljust(10, ".") + "500 ₽"  # 'цена......500 ₽'
"42".rjust(6)                    # '    42'

Для вывода чисел с подстановкой значений в текст удобнее f-строки: f"{n:03}" даёт тот же результат, что zfill(3) для положительных чисел.

Три задачи, где методы работают вместе

Рой радуется, что программа правильно посчитала слова в тексте

Принять ответ пользователя

Человек может ввести «Да», « да » или «ДА». Чтобы программа поняла все варианты, ввод чистят и приводят к одному регистру:

answer = "  Да \n"
print(answer.strip().lower() == "да")   # True

Посчитать слова в тексте

text = "Строка — это текст. Строка неизменяема, текст можно разбить."
words = text.lower().replace(".", "").replace(",", "").replace("—", "").split()
print(len(words), words.count("строка"), words.count("текст"))
# 8 2 2

Здесь count() вызван у списка, а не у строки. У списков тоже есть такой метод, а сложить числа из списка поможет функция sum().

Проверить телефон

raw = " +7 (999) 123-45-67 "
digits = "".join(ch for ch in raw if ch.isdigit())
print(digits, len(digits) == 11 and digits.startswith(("7", "8")))
# 79991234567 True

Больше таких упражнений собрано в подборке 30 задач по Python для начинающих.

Частые ошибки и что с ними делать

  1. Вызвали метод и не сохранили результат. city.upper() без присваивания ничего не меняет. Решение: city = city.upper().
  2. Разбили по " " вместо пустого split(). В результате появляются пустые строки там, где пробелов несколько. Решение: split() без аргумента.
  3. Передали strip() слово. strip("abc") убирает символы a, b и c в любом порядке, а не слово «abc». Решение: removeprefix() или removesuffix().
  4. Склеили join() список с числами. Получили TypeError. Решение: "".join(map(str, items)).
  5. Проверили число через isdigit(). Минус и точка дают False, а «²» даёт True. Решение: isdecimal() или try с int().
  6. Вызвали split() у None или списка. Получили AttributeError: метод есть только у строк. Решение: проверьте, что пришло, через type(x) или print(repr(x)).

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

Где освоить Python системно

Методы строк занимают небольшую часть языка. Чтобы уверенно писать программы целиком, нужны ещё циклы, функции, работа с файлами и библиотеками.

Если хочется пройти язык по программе с практикой и проверкой кода, сравните курсы Python по цене, длительности и формату. Для тех, кто целится в работу, есть подборка по профессии Python-разработчик.

КурсШколаСтоимость со скидкойВ рассрочкуДлитель­ностьОбзор курса от Checkroi
Профессия «Python-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Fullstack-разработчик на Python
Перейти на сайт курса
НетологияНетология137 011 ₽7125 ₽/мес.21 месяцОбзор курса
ДО Профессия Python-разработчик
Перейти на сайт курса
GeekBrainsGeekBrains149 001 ₽3167 ₽/мес.10 месяцевОбзор курса
Автоматизированное тестирование на Python
Перейти на сайт курса
SkillboxSkillbox118 666 ₽4108 ₽/мес.9 месяцевОбзор курса
Программирование на Python ПРО
Перейти на сайт курса
SkillboxSkillbox119 600 ₽ - 17 месяцевОбзор курса

Больше программ — в полном каталоге курсов по Python

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

Что делает split в Python?

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

Чем split() без аргумента отличается от split с пробелом?

split() без аргумента считает несколько пробелов подряд одним разделителем и убирает пустые строки по краям. split(" ") режет на каждом пробеле, поэтому при двойных пробелах в списке появляются пустые строки ''.

Как убрать пробелы в начале и конце строки в Python?

Метод strip() убирает пробелы, табуляции и переводы строк с обоих концов, lstrip() только слева, rstrip() только справа. Пробелы внутри строки остаются на месте.

Почему метод строки не меняет переменную?

Строки в Python неизменяемы, поэтому любой метод возвращает новую строку, а исходная остаётся прежней. Результат нужно сохранить: text = text.lower().

Чем find() отличается от index()?

Оба метода возвращают позицию первого вхождения подстроки. Если подстроки нет, find() возвращает -1, а index() вызывает ошибку ValueError.

Как посмотреть все методы строки в Python?

Выполните dir(str) в интерпретаторе: в Python 3.14 у строки 47 публичных методов. Справку по конкретному методу покажет help(str.split).

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!