Как работать со строками в Python: поиск, замена, объединение

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

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

Строки как объекты

В Python строки представляют собой объекты типа str. Это последовательности символов, которые поддерживают доступ по индексу, методы обработки текста, а также операции сравнения.

Иммутабельность строк

Строки неизменяемы: любые преобразования возвращают новую строку, не изменяя исходную.

Кавычки и многострочные строки

Строки можно задавать с помощью:

  • Одинарных кавычек: 'пример'

  • Двойных кавычек: "пример"

  • Тройных кавычек для многострочного текста:

python
"""Первая строка Вторая строка"""

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

Обращение к символам по индексу

python
text = "Python" print(text[0]) # 'P' print(text[-1]) # 'n'

Использование срезов

python
print(text[1:4]) # 'yth' print(text[:3]) # 'Pyt' print(text[3:]) # 'hon'

Отрицательная индексация

Позволяет обращаться к символам с конца строки:

python
print(text[-2:]) # 'on'

Поиск в строке

Метод find() и rfind()

  • find() возвращает индекс первого вхождения

  • rfind() — последнего

python
text = "banana" print(text.find("a")) # 1 print(text.rfind("a")) # 5

Метод index() и rindex()

Работают аналогично find(), но вызывают ошибку, если элемент не найден.

python
print(text.index("n")) # 2

Метод count()

Считает количество вхождений подстроки:

python
print(text.count("a")) # 3

Поиск с помощью in

python
if "ana" in text: print("Найдено")

Замена текста в строке

Метод replace()

python
text = "hello world" new_text = text.replace("world", "Python") print(new_text) # 'hello Python'

Указание количества замен

python
text = "1,2,3,2" print(text.replace("2", "x", 1)) # '1,x,3,2'

Замена с условиями

Перед заменой можно проверить наличие подстроки:

python
if "old" in text: text = text.replace("old", "new")

Отличие от регулярных выражений

Метод replace() заменяет точные совпадения. Для более гибкой замены лучше использовать re.sub().


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

Метод join()

python
words = ["Python", "is", "awesome"] print(" ".join(words)) # 'Python is awesome'

Конкатенация с оператором +

python
greeting = "Hello, " + "world!"

Объединение строк с числами

python
age = 30 print("Возраст: " + str(age)) # Или: print(f"Возраст: {age}")

Проверка содержимого строки

isdigit(), isalpha(), isalnum()

python
"123".isdigit() # True "abc".isalpha() # True "abc123".isalnum() # True

startswith(), endswith()

python
"index.html".endswith(".html") # True "url".startswith("http") # False

Проверка на пустую строку

python
if not my_string.strip(): print("Строка пустая или содержит только пробелы")

Преобразование регистра

python
text = "python programming" print(text.upper()) # 'PYTHON PROGRAMMING' print(text.lower()) # 'python programming' print(text.capitalize()) # 'Python programming' print(text.title()) # 'Python Programming'

Удаление символов и пробелов

strip(), lstrip(), rstrip()

python
" hello ".strip() # 'hello' "$$$data$$$".strip("$") # 'data'

Форматирование строк

Метод format()

python
"Привет, {}!".format("Андрей") # 'Привет, Андрей!'

f-строки

python
name = "Андрей" print(f"Привет, {name}!") # 'Привет, Андрей!'

Примеры форматирования

python
price = 49.99 print(f"Цена: {price:.2f} руб.") # Цена: 49.99 руб

Часто используемые комбинации методов

split + join

Разбиваем строку на части и соединяем их с новым разделителем:

python
text = "яблоко;банан;груша" words = text.split(";") new_text = ", ".join(words) print(new_text) # 'яблоко, банан, груша'

replace + strip

Удалим пробелы и заменим подстроки:

python
text = " привет, мир " result = text.strip().replace("мир", "Python") print(result) # 'привет, Python'

Примеры из реальных задач

1. Очистка списка товаров из строки:

python
raw = " молоко , хлеб , сыр " items = [item.strip() for item in raw.split(",")] print(items) # ['молоко', 'хлеб', 'сыр']

2. Подсчёт и отображение результатов:

python
scores = "100,90,80,95" avg = sum(map(int, scores.split(","))) / 4 print(f"Средний балл: {avg:.1f}")

Работа с пользовательским вводом

Очистка строки от лишнего

python
user_input = input("Введите строку: ").strip()

Проверка и безопасная обработка

python
if user_input: print("Вы ввели:", user_input) else: print("Пустая строка")

Регулярные выражения для продвинутого поиска и замены

Использование модуля re

Модуль re позволяет искать по шаблону:

python
import re text = "email: user@example.com" match = re.search(r"\w+@\w+\.\w+", text) print(match.group()) # user@example.com

Функции re.search(), re.sub(), re.findall()

  • re.search() — находит первое совпадение

  • re.sub() — заменяет по шаблону

  • re.findall() — возвращает список всех совпадений

python
text = "cat, dog, bird" print(re.findall(r"\w+", text)) # ['cat', 'dog', 'bird']
python
print(re.sub(r"\s+", "-", "Hello world")) # Hello-world

Когда стоит использовать регулярки

  • Для сложных шаблонов

  • Поиск по маске (телефоны, e-mail)

  • Множественные замены и фильтрации


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

Как найти все вхождения подстроки?

Используйте re.findall() или цикл:

python
import re matches = re.findall("abc", "abc abc abc") print(len(matches)) # 3

Как заменить несколько слов?

python
text = "кошка и собака" for old, new in {"кошка": "cat", "собака": "dog"}.items(): text = text.replace(old, new)

Как объединить строки с числами?

python
n = 5 s = f"Число: {n}" # предпочтительно

Можно ли удалить символы по индексу?

Да, но с созданием новой строки:

python
s = "python" s = s[:2] + s[3:] # удаление символа под индексом 2

Как избежать ошибок при объединении?

Преобразуйте все значения в строки:

python
str(5) + " apples" # или "{} apples".format(5) # или f"{5} apples"

Как работать со строками в цикле?

python
lines = [" строка 1 ", " строка 2 ", "строка 3"] cleaned = [line.strip() for line in lines]

Заключение

Основные выводы

Python предоставляет мощный и удобный набор инструментов для работы со строками. Среди них:

  • find(), replace(), split(), join(), strip() — ключевые методы для обработки текста

  • in, startswith(), endswith() — простые проверки

  • f-строки и format() — для форматирования

  • re — для сложных сценариев поиска и замены

Практические рекомендации

  • Изучайте базовые методы split, replace, join, strip

  • Освойте f-строки как стандарт форматирования

  • Используйте регулярные выражения для продвинутых задач

  • Тренируйтесь на задачах: обработка логов, ввод пользователя, парсинг текста

Грамотная работа со строками — основа любой программы, связанной с текстом, вебом, данными или пользовательским вводом.