Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Статьи

Работа со строками в Python: операции

26 января 2023·Обновлено 24 августа 2026·7 мин чтения
Дмитрий Лукьянов
Автор материалаДмитрий ЛукьяновBackend-разработчик, YuSMP Group
Профиль автора
Работа со строками в Python: операции
TL;DR — кратко о главном
  • Строки в Python неизменяемы: любой метод возвращает новую строку, а не меняет исходную.
  • 16+ базовых методов — от upper()/lower() до split()/join() — с готовыми примерами кода.
  • Для сборки строки из списка используйте join(), а не + в цикле — это быстрее.
  • Проверочные методы is* (isdigit, isalpha) и rjust()/ljust() закрывают частые задачи валидации и вывода.
  • Для сложных шаблонов поиска и замены — модуль re, а не ручной split()/replace().

Методы строк Python — одни из самых востребованных инструментов в языке. Неважно, откуда берётся текст — из пользовательского ввода, файлов или базы данных — строковые операции занимают значительную часть любого бэкенд-проекта.

В блоге студии web-разработки YuSMP Group собрали таблицу-шпаргалку по ключевым методам и разобрали каждый с примерами кода.

Что такое строка в Python

Строка — это неизменяемая последовательность символов, заключённая в кавычки (одинарные или двойные). Это один из наиболее часто используемых типов данных в программировании. Строки в Python неизменяемы: методы не меняют исходный объект, а всегда возвращают новый.

s = "Привет, мир"
s2 = 'Hello, World'

Индексация и длина строки

Каждый символ строки имеет позицию — индекс, отсчёт начинается с нуля. Обратиться к конкретному символу можно через квадратные скобки, а отрицательный индекс считает с конца строки.

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

Встроенная функция len() возвращает количество символов — она пригодится почти в каждой задаче: от валидации ввода до пагинации списков.

Код на Python: обращение к символу строки по индексу в редакторе кода

Таблица ключевых методов строк Python

МетодСинтаксисЧто делает
upper()s.upper()Переводит все символы в верхний регистр
lower()s.lower()Переводит все символы в нижний регистр
strip()s.strip()Удаляет пробелы по краям строки
lstrip()s.lstrip()Удаляет пробелы только слева
rstrip()s.rstrip()Удаляет пробелы только справа
split()s.split(sep)Разбивает строку по разделителю, возвращает список
join()sep.join(lst)Объединяет список строк через указанный разделитель
replace()s.replace(old, new)Заменяет вхождения подстроки
find()s.find(sub)Индекс первого вхождения; -1 если не найдено
index()s.index(sub)Аналог find(), но бросает ValueError при отсутствии
count()s.count(sub)Количество вхождений подстроки
startswith()s.startswith(p)Проверяет, начинается ли строка с префикса
endswith()s.endswith(sf)Проверяет, заканчивается ли строка суффиксом
str()str(obj)Преобразует число или объект в строку
len()len(s)Длина строки (встроенная функция)
format()"{}".format(v)Форматирует строку, подставляя значения
capitalize()s.capitalize()Первый символ — в верхний регистр, остальные — в нижний

Объединить строки

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

first_name = "Иван"
last_name = "Петров"
full_name = first_name + " " + last_name
# "Иван Петров"

Знак + для строк выполняет конкатенацию, а не сложение. Оператор += позволяет дополнять строку в цикле:

result = ""
for word in ["Python", "методы", "строк"]:
    result += word + " "

Функция join()

Метод join() эффективнее + при сборке строки из списка: он создаёт ровно один строковый объект вместо цепочки промежуточных.

words = ["Hello", "World"]
result = " ".join(words)
# "Hello World"

chars = ['H', 'e', 'l', 'l', 'o']
s = ''.join(chars)
# "Hello"

Умножить строку (дублирование)

Оператор * повторяет строку заданное число раз — удобно для разделителей, отступов и заглушек в консольном выводе.

line = "-" * 20
# "--------------------"

indent = "  " * 3
# "      "

Разделить строку

Метод split() разбивает строку на части и возвращает список. По умолчанию разделитель — любой пробельный символ.

name = "Иван Петров"
parts = name.split(" ")
first = parts[0]   # "Иван"
last  = parts[1]   # "Петров"

Метод splitlines() разбивает многострочный текст по символу переноса — удобно при разборе файлов и API-ответов.

Преобразовать число в строку

Функция str() преобразует любой объект в его строковое представление.

price = 9999
text = str(price)     # "9999"
pi = str(3.14)        # "3.14"

Обратное преобразование — через int() или float():

n = int("42")      # 42
f = float("3.14")  # 3.14

По умолчанию str() использует кодировку UTF-8. Передав вторым аргументом схему ошибок (например, 'ignore' или 'replace'), можно управлять поведением при некорректных символах.

Найти подстроку или символ

Метод find() возвращает индекс первого вхождения или -1, если ничего не найдено. Метод index() работает так же, но при отсутствии бросает ValueError — выбор зависит от того, нужна ли явная обработка ошибки.

email = "user@example.com"
pos = email.find("@")        # 4
miss = email.find("!")       # -1

Для проверки вхождения без позиции — оператор in:

if "@" in email:
    print("Формат корректен")

Метод count() считает количество вхождений подстроки:

s = "banana"
s.count("a")  # 3

Заменить символы или подстроки

Метод replace() возвращает новую строку с заменёнными вхождениями. Первый аргумент — заменяемый фрагмент, второй — то, на что заменяем.

s = "Hello World"
s2 = s.replace("World", "Python")
# "Hello Python"

s3 = s.replace("o", "0")
# "Hell0 W0rld"

Третий необязательный аргумент count ограничивает количество замен:

s.replace("o", "0", 1)
# "Hell0 World" — заменяется только первое вхождение

Для замены сразу нескольких символов за один проход эффективнее str.translate() с таблицей соответствий из str.maketrans() — быстрее, чем цепочка вызовов replace().

digits_to_stars = str.maketrans("0123456789", "**********")
"card 4111 1111 1111 1111".translate(digits_to_stars)
# "card **** **** **** ****"

Регистр, пробелы и форматирование

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

user_input = "  Python  "
clean = user_input.strip()    # "Python"
lower = clean.lower()         # "python"
upper = clean.upper()         # "PYTHON"

url = "https://example.com"
url.startswith("https")       # True
url.endswith(".com")          # True

Для подстановки переменных используйте f-строки (Python 3.6+) или метод format():

name = "Иван"
age = 30
msg = f"Привет, {name}! Тебе {age} лет."
# или
msg = "Привет, {}! Тебе {} лет.".format(name, age)

Проверка содержимого: методы is*

Методы с префиксом is возвращают True или False и закрывают простые проверки ввода без регулярных выражений.

МетодЧто проверяетПример
isdigit()Состоит только из цифр"2026".isdigit() → True
isalpha()Состоит только из букв"Python".isalpha() → True
isalnum()Только буквы и цифры"user123".isalnum() → True
isupper()Все буквы в верхнем регистре"HTTP".isupper() → True
islower()Все буквы в нижнем регистре"python".islower() → True
isspace()Состоит только из пробельных символов" ".isspace() → True

Такую проверку часто ставят перед преобразованием типов: прежде чем вызывать int(user_input), стоит убедиться, что user_input.isdigit() вернул True — иначе код упадёт с исключением ValueError.

Разработчик проверяет логику валидации пользовательского ввода в редакторе кода

Выравнивание строки: rjust() и ljust()

Методы rjust() и ljust() дополняют строку символами-заполнителями до нужной длины — пригодится при выводе таблиц в консоли или логах.

"42".rjust(5, "0")
# "00042"

"OK".ljust(10, ".")
# "OK........"

Нарезка строк (slicing)

Срез позволяет извлечь подстроку по диапазону индексов. Синтаксис: s[start:end:step].

s = "Hello, World"
s[0:5]    # "Hello"
s[7:]     # "World"
s[-5:]    # "World"
s[::-1]   # "dlroW ,olleH" (реверс)

Практический пример: разбор ФИО пользователя

Соберём несколько методов из этой статьи в одну задачу — привести к единому виду ФИО, введённое пользователем в свободной форме.

raw = "  иванов  ИВАН   петрович  "

clean = " ".join(raw.split())
# убираем лишние пробелы и переносы: "иванов ИВАН петрович"

parts = clean.split(" ")
fio = " ".join(p.capitalize() for p in parts)
# "Иванов Иван Петрович"

if not fio.replace(" ", "").isalpha():
    raise ValueError("ФИО должно содержать только буквы")

За несколько строк сочетание split(), join(), capitalize() и проверки isalpha() решает типичную задачу валидации формы — без регулярных выражений.

Что важно запомнить

Строки в Python неизменяемы: ни один метод не меняет исходный объект, а возвращает новую строку. В циклах накопление через + медленнее, чем join(), поскольку каждый + создаёт новый объект. Встроенные методы покрывают большинство задач; для сложных паттернов используйте модуль re (регулярные выражения).

Разработка на Python и других языках в YuSMP Group — от анализа требований до поддержки на проде. Посмотрите реализованные проекты: наша команда поможет реализовать любую технологичную идею.

Частые вопросы

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

Оба метода ищут подстроку и возвращают её позицию. Разница: find() возвращает -1, если подстрока не найдена; index() в том же случае бросает ValueError. Выбирайте find(), когда отсутствие — нормальная ситуация, и index(), когда хотите явно обработать ошибку через try/except.

Как объединить список строк в одну строку в Python?

Используйте метод join(): " ".join(["Python", "методы", "строк"]) вернёт "Python методы строк". Это эффективнее конкатенации через + в цикле — join() создаёт ровно один строковый объект.

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

Самый лаконичный способ — оператор in: if "@" in email. Если нужна позиция вхождения — используйте find() или index().

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

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

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

Современный способ (Python 3.6+) — f-строки: f"Привет, {name}!". Альтернативы: метод format() — "Привет, {}!".format(name) — и %-форматирование. F-строки быстрее и читаемее остальных вариантов.

Можно ли изменить отдельный символ в строке Python?

Нет — строки неизменяемы. Чтобы «изменить» символ, создайте новую строку: через срезы s[:2] + "X" + s[3:] или метод replace().

Как проверить, что строка состоит только из цифр в Python?

Используйте метод isdigit(): "2026".isdigit() вернёт True. Это полезно проверить перед преобразованием пользовательского ввода через int(), чтобы не получить исключение ValueError на некорректных данных.

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

Используйте оператор *: "-" * 20 создаёт строку из 20 дефисов. Это короче и быстрее, чем собирать повтор через цикл с конкатенацией.

Нужны разработчики в команду?

Подберём инженеров нужного стека под ваш проект — быстрый старт.

Обсудить команду