Глиф Учебники

Урок 7. Строки

Курс «Python» · урок 7 из 10 · 3 минуты чтения

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

Кавычки и спецсимволы

Строку можно взять в двойные или одинарные кавычки. Если внутри текста есть кавычки одного вида, снаружи ставят другие. Для текста в несколько строк — тройные кавычки """…""".

Внутри строки обратная косая черта \ начинает спецсимвол: \n — перевод строки, \t — табуляция, \\ — сама косая черта, \" — кавычка.

Python
print("Первая строка\nВторая строка")
print('Книга "Python для всех"')
print("Путь: C:\\Users")
text = """Можно писать
в несколько строк"""
print(text)
Вывод
Первая строка
Вторая строка
Книга "Python для всех"
Путь: C:\Users
Можно писать
в несколько строк

Из-за спецсимволов пути Windows в обычной строке ломаются: в "C:\new" сочетание \n станет переводом строки. Перед такой строкой ставят букву r — r"C:\new", тогда \ остаётся обычным знаком. Или пишут прямую косую: "C:/new" — Windows понимает и её.

в коде знаки строки на экране "C:\new" C : \n e w один знак — перевод строки C: ew путь сломан r"C:\new" C : \ n e w два обычных знака C:\new как в коде
В обычной строке "C:\new" сочетание \n — один знак перевода строки, и путь выводится в две строки, а в строке r"C:\new" обратная косая черта и n — два обычных знака.

Длина, индексы, срезы

Строка устроена как список букв: у каждой буквы есть индекс с нуля, работают отрицательные индексы и срезы.

Python
s = "Беларусь"
print(len(s))
print(s[0])
print(s[-1])
print(s[0:4])
print(s[::-1])
Вывод
8
Б
ь
Бела
ьсуралеБ

[::-1] — строка задом наперёд. Об этом и других способах — в справке Как перевернуть строку.

Строку нельзя изменить

В отличие от списка, строку нельзя поменять по индексу: s[0] = "б" даёт ошибку TypeError: 'str' object does not support item assignment. Вместо этого составляют новую строку:

Python
s = "минск"
s = s[0].upper() + s[1:]
print(s)
Вывод
Минск

Методы строк

Метод — функция, которая принадлежит значению и вызывается через точку: s.upper(). Самые нужные:

МетодЧто делает
s.upper(), s.lower()все буквы большие, все маленькие
s.strip()убирает пробелы и переводы строк по краям
s.replace(a, b)заменяет каждое a на b
s.split()режет строку на слова, получается список
s.find(a)индекс первого вхождения a или −1, если его нет
s.count(a)сколько раз a встречается в строке
s.startswith(a), s.endswith(a)начинается ли строка с a, заканчивается ли на a
s.isdigit()состоит ли строка только из цифр
Python
s = "  Привет, Мир!  "
print(s.strip())
print(s.strip().upper())
print(s.strip().lower())
print(s.replace("Мир", "Python").strip())
print(s.count("и"))
print(s.find("Мир"))
Вывод
Привет, Мир!
ПРИВЕТ, МИР!
привет, мир!
Привет, Python!
2
10

Методы не меняют строку, а возвращают новую. Строка s.upper() сама по себе ничего не сделает с s — результат нужно сохранить: s = s.upper().

s.upper() s "минск" s не изменилась upper() "МИНСК" не сохранена s = s.upper() s s "минск" забыта upper() "МИНСК"
s.upper() создаёт новую строку "МИНСК", но s по-прежнему указывает на "минск"; только после s = s.upper() имя s переходит к новой строке.

split и join

split режет строку на части и возвращает список. С пустыми скобками режет по пробелам, а со знаком в скобках — по этому знаку: split("."). join делает обратное: склеивает список строк через разделитель.

Python
line = "Минск Брест Гродно"
cities = line.split()
print(cities)
print(len(cities))
print(", ".join(cities))
date = "05.11.2026"
day, month, year = date.split(".")
print(year)
Вывод
['Минск', 'Брест', 'Гродно']
3
Минск, Брест, Гродно
2026
строка список строка "Минск Брест Гродно" .split() 'Минск' 'Брест' 'Гродно' ", ".join(cities) "Минск, Брест, Гродно"
split() режет строку "Минск Брест Гродно" по пробелам на список из трёх строк, а ", ".join(cities) склеивает их обратно через запятую с пробелом.

join склеивает только строки: список чисел сначала переводят в строки, например " ".join(map(str, nums)).

Поиск и перебор букв

Оператор in проверяет, есть ли кусок текста в строке: "Мир" in s. Цикл for проходит строку по буквам. Пример — сколько гласных в набранной фразе:

Python
text = input()
vowels = "аеёиоуыэюя"
count = 0
for ch in text.lower():
    if ch in vowels:
        count += 1
print(count)
Ввод
Привет, Мир
Вывод
3

lower() нужен, чтобы большие буквы тоже нашлись в строке vowels.

Склейка и f-строки

Строки склеивают знаком +, повторяют знаком *. Число к строке напрямую не прибавить — его переводят функцией str. Удобнее всего f-строка: перед кавычкой ставят букву f, а значения подставляют в фигурных скобках.

Python
name = "Аня"
age = 15
print("Имя: " + name + ", возраст: " + str(age))
print(f"{name} — {age} лет")
price = 2.5
print(f"Цена: {price * 3:.2f} руб.")
print("-" * 20)
Вывод
Имя: Аня, возраст: 15
Аня — 15 лет
Цена: 7.50 руб.
--------------------

:.2f после значения — «два знака после точки». Все возможности — в справке f-строки и форматирование вывода.

Сравнение строк

Строки сравниваются == и != с учётом регистра: "Минск" == "минск" — False. Чтобы не зависеть от регистра, обе строки приводят к одному виду: a.lower() == b.lower(). Знаки < и > сравнивают строки по алфавиту, точнее — по кодам букв, поэтому все большие буквы идут раньше маленьких, а «ё» стоит после «я».

Коротко

Проверьте себя

1. Что выведет программа?
Python
s = "Python"
print(s[1:4])
2. Что выведет программа?
Python
s = "кот"
s.replace("к", "р")
print(s)
3. Что вернёт "a,b,c".split(",")?
4. Как вывести число n вместе с текстом без ошибки?