Python: уроки, справочник и задачи

Python работа со строками

Раздел: Строки в Python · Обновлено 31.10.2026

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

Примеры проверены на Python 3.12 и 3.13. В новом разделе собраны приемы, которые отличают аккуратный код: срезы с шагом, быстрая склейка через join, удаление префикса без ошибок, raw-строки для путей Windows и возможности f-строк, расширенные в версии 3.12.

Python работа со строками
Фото: WOKANDAPIX / CC0, Wikimedia Commons
Содержание статьи
  1. Строка в python - что такое?
  2. Как создать строку в Python?
  3. Как получить доступ к символам в строке?
  4. Как изменить или удалить строку?
  5. Строковые операции в Python
    1. Конкатенация строк
    2. Итерация по строке
  6. Проверка на наличие символа
  7. Форматирование строк в Python
  8. Метод format() и f - строки для форматирования строк
  9. Самые популярные методы строк
  10. Приемы со строками, которые пригодятся каждый день
    1. Срезы с шагом и отрицательные индексы
    2. Склейка в цикле через join
    3. Удаление префикса и лишних пробелов
    4. Raw-строки для путей и регулярных выражений
    5. Возможности f-строк
  11. Частые вопросы
    1. Как изменить один символ в строке?
    2. Чем find() отличается от index()?
    3. Как перевернуть строку в Python?
    4. Почему print со строкой вида C:\new выводит перенос строки?

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

Строка в python - что такое?

Строка - ничто иное как последовательность символов. В Python работа со строками, организована довольно удобно. Как и с остальными типами данных, мы поверхностно уже разбирали работу со строками, а сегодня мы немного углубимся в эту тему.

Как создать строку в Python?

Строки в Python заключаются в кавычки (одинарные, двойные), и даже можно заключать в тройные кавычки, правда на практике тройные кавычки используются для документационных строк. Рассмотрим пример создания строки, и пошагово пройдемся по основным методам.

str = 'Hello'
str2 = "Hello"
str3 = '''Hello'''
str4 = """Привет, добро пожаловать в мир чудес и магии
под названием Python"""
print(str,str2,str3,str4)
Результат:
Hello
Hello
Hello
Привет, добро пожаловать в мир чудес и магии
под названием Python

Как получить доступ к символам в строке?

Как и со списками и с кортежами, мы можем получить доступ к символам в строке с помощью индексации. Мы можем получить доступ как к отдельному символу, так и к к ряду символов, счет индекса начинается с нуля. При поптыке получить доступ к символу, который находится вне диапазона строки, Python выдаст ошибку IndexError.

Python так же допускает отрицательную индексацию. Индекс -1 будет равен последнему символу, -2 будет равен предпоследнему символу и так далее. К диапазону элементов, мы получаем доступ, с помощью знакомых нам уже срезов :.

str = "pydocs"
print(str)
print(str[0])
print(str[-1])
print(str[1:5])
print(str[4:2])
Результат:
pydocs
p
s
ydocs
cs

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

Как получить доступ к символам в строке?

Как изменить или удалить строку?

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

str = "pydocs"
str[2] = "a"
Результат:
TypeError: 'str' object does not support item assignment
str = "pydocs"
str = "egesoch.cc"
Результат:
egesoch.cc

Удаление строки происходит с помощью ключевого слова del, мы не можем удалить конкретный символ, мы можем удалить только всю строку.

str = "pydocs"
del str[1]
TypeError: 'str' object doesn't support item deletion
del str
print(str)
Результат:
<class 'str'> (после del str снова доступен встроенный тип str)

Строковые операции в Python

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

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

Оператором + в Python можно сложить два и более строк. Оператором * можно воспользоваться, если нам необходимо повторить строку определенное количество раз.

str1 = "Hello"
str2="World"
print(str1 + str2)
Результат:
HelloWorld
print(str1 * 3)
Результат:
HelloHelloHello

Итерация по строке

Python так же позовляет проводить перебор строки, с помощью цикла for. Ниже приведен пример подсчета количества букв "o".

count = 0
for i in "Hello World":
if i == 'o':
count += 1
print(count, "символа найдено")
Результат:
2 символа найдено

Проверка на наличие символа

Мы можем проверить наличие символа в строке используя ключевое слово in.

"y" in "pydocs"
True
"da" not in "pydocs" (результат True)
False

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

Представим себе ситуацию, где мы хотим распечатать текст Pyth'on - "Мир Магии" и волшебства. В тексте используются как одинарные, так и двойные кавычки, при попытке распечатки, это приведет к синтаксической ошибке. В Python конечно же это предусмотрено, и есть несколько вариантов обхода этой проблемы.

Во первых мы можем просто воспользоваться тройными кавычками """. Но чаще всего, вы будете встречаться с таким понятием как "Экранирование кавычек" - escape последовательность.Рассмотрим оба варианта:

print("""Pyth'on - "Мир Магии" и волшебства""")
print('Pyth\'on - "Мир Магии" и волшебства')

Ниже представлены команды для Escape последовательностей

Escape последовательностьОписание
\новая строка Игнорируется, строка продолжается на новой строке
\\Сам символ обратного слеша (остается один символ \)
\' Апостроф (остается один ')
\" Кавычка (остается один символ ")
\f Форматированная строка
\n Новая строка
\r Возврат каретки
\t Горизонтальная табуляция
\ооо Символ с восьмеричным значением ооо
\xHH Символ с шестнадцатеричным значением HH
print(r"C:\Users\User\Desktop")
Результат:
C:\Users\User\Desktop
print("Это строка \n это новая строка")
Результат:
Это строка
это новая строка

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

Довольно часто в ходе программирования, вам придется распечатывать значения переменных, вместе со строками. Для этого используются форматированные строки. Рассмотрим пример вывода с использованием метода format() и f-строки.

name = "{},{} и {}".format("Тимур","Антон","Катя")
print(name)
Результат:
Тимур,Антон и Катя
name = "{s},{b} и {j}".format(j='Тимур', b='Антон', s = 'Катя')
print(name)
Результат:
Катя,Антон и Тимур

С реализацией метода format() думаю мы разобрались, теперь посмотрим, что из себя представляют f строки.

name = "Тимур"
age = 30
print(f"Меня зовут {name}. Мне {age} лет.")
Результат:
Меня зовут Тимур. Мне 30 лет.

На мой взгляд использование f- строк удобнее, и в большинстве случаев я именно так и делаю. Есть еще более старый метод форматирования строк, sprintf(), который использует оператор %, но я его специально не стал описывать.

Самые популярные методы строк

Операции над строками в Python, очень хорошо реализованы, и существо множество различных методов, о них можно почитать в официальной документации.

Вот некоторые, более часто используемые методы lower(), upper(),.join(), split(),find(), replace()

"Egesoch.CC".lower()
'egesoch.cc'
"Egesoch.CC".upper()
'EGESOCH.CC'
"Это мир магии и волшебства под названием Python".split()
['Это','мир','магии','и','волшебства','под','названием','Python',]
'Happy New Year'.find('ew')
7
'Happy New Year'.replace('Happy', 'Python')
'Python New Year'

Приемы со строками, которые пригодятся каждый день

В этом разделе: срезы с шагом и отрицательные индексы, склейка в цикле через join, удаление префикса и лишних пробелов, Raw-строки для путей и регулярных выражений, возможности f-строк.

Срезы с шагом и отрицательные индексы

s = "pydocs"
print(s[1:5])     # -> ydoc   (символ с индексом 5 не входит)
print(s[-3:])     # -> ocs    (последние три символа)
print(s[::2])     # -> pdc    (каждый второй)
print(s[::-1])    # -> scodyp (разворот строки)
print(s[4:2])     # -> пустая строка, начало правее конца

Срез никогда не вызывает IndexError: если границы выходят за строку, Python просто обрежет их. Ошибку дает только обращение к одному символу, например s[10].

Склейка в цикле через join

Строки неизменяемы, поэтому result += part в цикле каждый раз создает новую строку. На тысячах фрагментов это заметно медленнее. Собирайте части в список и склеивайте один раз. Метод join() вызывается у строки-разделителя и принимает любой итерируемый объект, но все его элементы должны быть строками: числа сначала преобразуйте через str(), иначе получите TypeError. Обратная операция выполняется методом split(): без аргументов он делит текст по любым пробелам, а с аргументом по указанному разделителю, например "a;b;c".split(";").

words = ["Python", "3.13", "строки"]
print(" ".join(words))                       # -> Python 3.13 строки
print(", ".join(str(n) for n in range(5)))   # -> 0, 1, 2, 3, 4

Удаление префикса и лишних пробелов

name = "  report_2026.csv\n"
clean = name.strip()                  # -> 'report_2026.csv'
print(clean.removesuffix(".csv"))     # -> report_2026
print("www.site.ru".removeprefix("www."))   # -> site.ru
print("www.site.ru".lstrip("w."))           # -> site.ru, но...
print("web.ru".lstrip("w."))                # -> eb.ru

lstrip() и rstrip() удаляют любые символы из набора, а не подстроку целиком. Для приставок и окончаний используйте removeprefix() и removesuffix().

Raw-строки для путей и регулярных выражений

В обычной строке "C:\Users" последовательность \U считается началом кода Unicode, и Python выдаст SyntaxError. Префикс r отключает обработку обратной косой черты: r"C:\Users\User\Desktop". Для путей еще удобнее модуль pathlib. Учтите, что raw-строка не может заканчиваться одиночной обратной косой чертой.

Возможности f-строк

price, item = 1234.5, "чайник"
print(f"{item:>10}|")      # ->     чайник|
print(f"{price:,.2f}")     # -> 1,234.50
print(f"{price=}")         # -> price=1234.5
users = {"name": "Тимур"}
print(f"{users["name"]}")  # с Python 3.12 кавычки внутри можно повторять
ЗадачаМетодПример результата
Начинается ли строка с подстрокиs.startswith("http")True
Позиция подстроки без ошибкиs.find("x")-1, если нет
Сколько раз встречаетсяs.count("o")число вхождений
Только ли цифрыs.isdigit()True или False
Сравнение без учета регистраa.casefold() == b.casefold()True или False

Подробнее о форматировании читайте в статье f-строки в Python.

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

Несколько вопросов, которые часто задают начинающие, и ответы на них.

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

Напрямую нельзя, строки неизменяемы. Соберите новую строку из срезов: s = s[:2] + "a" + s[3:], или используйте replace(), если нужно заменить все вхождения подстроки.

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

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

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

Срезом с отрицательным шагом: s[::-1]. Вариант "".join(reversed(s)) дает тот же результат, но длиннее и медленнее.

Почему print со строкой вида C:\new выводит перенос строки?

Сочетание \n внутри обычной строки превращается в символ новой строки. Удвойте обратную косую черту ("C:\\new"), используйте raw-строку r"C:\new" или прямые слеши, которые Windows тоже понимает.