Работа с текстовыми данными: переменные, индексы и форматирование

Раздел: Работа со строками -> основы строк

Практикум по строковому типу данных в Python

Строка в Python представляет собой неизменяемую последовательность Unicode символов. Текст можно записывать в одинарных или двойных кавычках. Большинство строковых методов возвращают новую строку, а исходный объект остаётся без изменений.

Как создать строку, если внутри текста есть кавычки?

Основной вариант состоит в выборе таких внешних кавычек, которые отличаются от кавычки внутри текста.
name = 'Иван'
message = 'Привет, Иван!'
print(name)
print(message)

text = 'Он сказал: «Python удобен»'
print(text)

Python работа с текстом (работа со строками в python)

Иван
Привет, Иван!
Он сказал: «Python удобен»
Для многострочного текста удобно использовать тройные одинарные или тройные двойные кавычки. Этот приём подходит для длинных описаний и переносов строк.
note = '''Первая строка
Вторая строка'''
print(note)
Первая строка
Вторая строка
Текст вида text = 'День 'яркий'' вызовет SyntaxError, потому что одинаковая кавычка внутри завершает строку раньше предполагаемого момента. Проблема решается переходом на другую пару внешних кавычек или добавлением обратного слеша перед внутренней кавычкой.

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

Доступ к элементу выполняется через квадратные скобки. Срез помогает получить несколько символов подряд. У строки индекс первого символа равен нулю, последний доступен по индексу минус один.
s = 'python'
print(s[0])
print(s[-1])
print(s[2:5])
print(s[:3])
print(s[::2])
p
n
tho
pyt
pto
Срез с отрицательным шагом позволяет перевернуть строку, что полезно при проверке палиндромов и зеркальном отображении текста.
word = 'abcde'
print(word[::-1])
edcba
Строка неизменяема, поэтому присваивание вида s[0] = 'A' приводит к ошибке TypeError. Если требуется изменить отдельный символ, создаётся новая строка, например через метод replace или срезы.

Как привести текст к нужному регистру и убрать лишние пробелы?

Методы lower, upper, title и strip выполняют часто используемую нормализацию текста. strip удаляет пробелы, табуляцию и символы перевода строки по краям.
raw = '  python для начинающих  '
s = raw.strip()
print(s)
print(s.lower())
print(s.upper())
print(s.title())
python для начинающих
python для начинающих
PYTHON ДЛЯ НАЧИНАЮЩИХ
Python Для Начинающих
Для поиска и сравнения без учёта регистра применяется метод casefold. Он приводит строку к единому регистру, что удобно в проверках без учёта регистра.
a = 'СТРАНА'
b = 'страна'
print(a.casefold() == b.casefold())
print('Привет'.lower())
True
привет
Вызов метода без сохранения результата не меняет исходную строку. Например, после raw.strip() переменная raw остаётся в исходном состоянии. Для новой строки используют присваивание s = raw.strip().

Как узнать, содержит ли строка подстроку, и где она находится?

Оператор in даёт логический ответ, а метод find возвращает индекс первого вхождения.
text = 'Python помогает с текстом'
print('помогает' in text)
print(text.find('помогает'))
print(text.index('с'))
True
7
16
Для поиска без учёта регистра и для поиска последнего вхождения применяются методы lower, rfind и rindex.
text = 'Python и PYTHON'
print(text.lower().find('python'))
print(text.lower().rfind('python'))
0
9
find возвращает минус единицу, если подстрока отсутствует. index в такой ситуации выбрасывает ValueError. Если нужен только факт наличия подстроки, предпочтительнее оператор in.

Как заменить часть текста на другую?

Метод replace заменяет все вхождения или ограниченное число вхождений через параметр count.
text = 'красный цвет, красный шар'
print(text.replace('красный', 'синий'))
print(text.replace('красный', 'синий', 1))
синий цвет, синий шар
синий цвет, красный шар
Если нужно удалить префикс или суффикс, в Python 3.9 и новее доступны методы removeprefix и removesuffix.
filename = 'document_final.txt'
print(filename.removesuffix('.txt'))
print(filename.removeprefix('document_'))
document_final
final.txt
replace не изменяет исходную строку. Если результат не присвоен переменной, исходный текст остаётся прежним.

Как разбить текст на части и объединить их в одну строку?

split выполняет разбиение по разделителю, join соединяет последовательность строк.
sentence = 'один два три'
words = sentence.split()
print(words)
print('-'.join(words))
['один', 'два', 'три']
один-два-три
Параметр maxsplit ограничивает количество разбиений, а метод rsplit начинает обработку с конца.
data = '2025;Python;работа'
print(data.split(';'))
print(data.split(';', 1))
url = 'site.com/page/image.png'
print(url.rsplit('/', 1))
['2025', 'Python', 'работа']
['2025', 'Python;работа']
['site.com/page', 'image.png']
При использовании join метод вызывается на строке разделителе, а не на списке. Правильный порядок выглядит как разделитель.join(список), например '-'.join(words).

Как вставить значения переменных в строку?

Наиболее удобный способ форматирования в Python 3.6 и выше: f строка. Перед строкой ставится буква f, а переменные заключаются в фигурные скобки.
name = 'Анна'
age = 29
print(f'Имя: {name}, возраст: {age}')
price = 1234.5
print(f'Итог: {price:.2f} руб.')
print(f'Число: {1024:05d}')
Имя: Анна, возраст: 29
Итог: 1234.50 руб.
Число: 01024
Метод format работает со старой версией Python и позволяет многократно использовать номер позиции аргумента.
name = 'Анна'
age = 29
print('Имя: {}, возраст: {}'.format(name, age))
print('{0} {1} {0}'.format('раз', 'два'))
Имя: Анна, возраст: 29
раз два раз
Фигурные скобки в f строке служат для выражений. Чтобы показать литеральную фигурную скобку, перед ней и после неё ставят вторую скобку, то есть пишут двойные скобки.

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

Методы isdigit, isalpha и isalnum определяют, состоит ли строка из цифр, букв или букв с цифрами. startswith и endswith проверяют начало и конец текста.
text = '2026'
word = 'город'
mixed = 'abc123'
print(text.isdigit())
print(word.isalpha())
print(mixed.isalnum())
print('hello'.startswith('he'))
print('file.png'.endswith('.png'))
True
True
True
True
True
isspace обнаруживает пустой текст, состоящий из пробелов, переводов строк и табуляций. isdecimal проверяет десятичные цифры.
space_line = '   '
print(space_line.isspace())
print('123'.isdecimal())
True
True
Методы isalpha и isalnum учитывают Unicode, поэтому isalpha возвращает True и для кириллических букв. Для ограничения набора символов латиницей потребуется дополнительная проверка по перечню допустимых символов.

Как сравнить две строки между собой?

Обычное сравнение через == учитывает регистр. Для сравнения без учёта регистра обе строки приводят к одному регистру.
a = 'Python'
b = 'python'
print(a == b)
print(a.lower() == b.lower())
False
True
Для сортировки с игнорированием регистра можно использовать аргумент key.
words = ['apple', 'Banana', 'cherry']
print(sorted(words))
print(sorted(words, key=str.lower))
['Banana', 'apple', 'cherry']
['apple', 'Banana', 'cherry']
Сравнение строки с числом вызывает TypeError в Python 3. Перед сравнением необходимо преобразовать данные к одному типу.

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

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

Генерация строки из списка чисел

Метод join требует список строк. Поэтому каждый элемент списка чисел сначала преобразуется через str.

Пример
numbers = [1, 2, 3]
line = ', '.join(str(x) for x in numbers)
print(line)
1, 2, 3

Ограничение числа разбиений

Метод split с параметром maxsplit делит строку только в нескольких первых местах. Это удобно для выделения начальной части и остатка.

Пример
date = '2025-06-01'
year, rest = date.split('-', 1)
print(year)
print(rest)
2025
06-01

Поиск последнего разделителя

Метод rsplit ищет разделитель с правой стороны. Он удобен при работе с файловыми путями и адресами.

Пример
filename = 'archive.tar.gz'
base, ext = filename.rsplit('.', 1)
print(base)
print(ext)
archive.tar
gz

Разбор строки через partition

Метод partition возвращает кортеж из трёх элементов: часть до разделителя, сам разделитель и часть после него.

Пример
url = 'https://example.com/path'
protocol, sep, rest = url.partition('://')
print(protocol)
print(sep)
print(rest)
https
://
example.com/path

Метод translate для удаления знаков препинания

Функция maketrans создаёт таблицу замен. Пустые строки в аргументах означают, что замены нет, а третий аргумент собирает удаляемые символы.

Пример
import string
text = 'Привет, мир! Этот текст...'
clean_text = text.translate(str.maketrans('', '', string.punctuation))
print(clean_text)
Привет мир Этот текст

Символьное заполнение полей

Методы rjust, ljust и center дополняют строку до нужной ширины. zfill добавляет нули слева.

Пример
value = '7'
print(value.rjust(3, '0'))
print(value.ljust(3, '.'))
print(value.center(5, '-'))
print(value.zfill(5))
007
7..
--7--
00007

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

Срез с шагом минус единица возвращает строку в обратном порядке. Объединение через join удобно, когда нужно обработать результат reversed.

Пример
text = 'Python'
backwards = text[::-1]
print(backwards)
back = ''.join(reversed(text))
print(back)
nohtyP
nohtyP

Count и in для подсчёта вхождений

Подсчёт количества вхождений выполняется методом count. Эта операция не изменяет исходную строку.

Пример
sentence = 'тень, тень, потень'
print(sentence.count('тень'))
3

Проверка окончания и начала для маршрутов

Методы startswith и endswith отлично подходят для фильтрации имён файлов, поиска префиксов и обработки URL.

Пример
name = 'report_2025.pdf'
print(name.startswith('report_'))
print(name.endswith('.pdf'))
print('https://site.ru/page'.startswith('https://'))
True
True
True

Замена нескольких символов по таблице

Метод translate также заменяет символы по словарю. Ключи словаря должны быть кодами Unicode символов.

Пример
trans_dict = {ord('а'): 'a', ord('б'): 'b'}
text = 'аб'
print(text.translate(trans_dict))
ab

работа со строками в Python - comments

En
Python работа с текстом (python)