Статьи

Учебные материалы по языку Python — от основ до продвинутых тем

str

Страница 23 из 34 · 2026-10-26 · 4 мин чтения

Создание

Строка — неизменяемая последовательность символов Unicode:

a = "текст"b = 'text'c = """многострочныйтекст"""d = str(123)e = str([1, 2])f = ""g = r"C:\path\n"

Общие операции

s = "Python"print(len(s))print(s[0], s[-1])print(s[1:4])print(s * 2)print(s + "!")print("th" in s)print(max(s), min(s))print(sorted(s))print(list(s))

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

s = "abc"s = s[:1] + "X" + s[2:]print(s)

Методы str

Регистр

МетодОписание
lower()Нижний регистр
upper()Верхний регистр
casefold()Агрессивный нижний регистр для сравнения без учёта регистра
capitalize()Первая буква заглавная, остальные строчные
title()Каждое слово с заглавной буквы
swapcase()Инвертирует регистр

Проверки

МетодОписание
isalpha()Только буквы
isdigit()Только цифры
isdecimal()Только десятичные цифры
isnumeric()Числовые символы, включая дроби и римские цифры
isalnum()Буквы и цифры
isspace()Только пробельные символы
islower(), isupper(), istitle()Проверки регистра
isidentifier()Допустимый идентификатор
isprintable()Все символы печатаемые
isascii()Все символы из ASCII
startswith(prefix[, start, end])Начинается с префикса, можно передать кортеж
endswith(suffix[, start, end])Заканчивается суффиксом, можно передать кортеж

Поиск и подсчёт

МетодОписание
find(sub[, start, end])Индекс первого вхождения или -1
rfind(sub[, start, end])Индекс последнего вхождения или -1
index(sub[, start, end])Как find, но вызывает ValueError
rindex(sub[, start, end])Как rfind, но вызывает ValueError
count(sub[, start, end])Число непересекающихся вхождений

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

МетодОписание
strip([chars])Удаляет символы с обоих концов
lstrip([chars]), rstrip([chars])Удаляют слева или справа
removeprefix(prefix)Удаляет префикс, если он есть
removesuffix(suffix)Удаляет суффикс, если он есть
replace(old, new[, count])Замена подстроки
translate(table)Замена символов по таблице
str.maketrans(x[, y[, z]])Создаёт таблицу для translate
expandtabs(tabsize=8)Заменяет табуляции пробелами

Разбиение и склейка

МетодОписание
split(sep=None, maxsplit=-1)Разбивает на список
rsplit(sep=None, maxsplit=-1)То же, но справа
splitlines(keepends=False)Разбивает по границам строк
partition(sep)Кортеж (до, разделитель, после)
rpartition(sep)То же с последнего вхождения
join(iterable)Склеивает строки через разделитель

Выравнивание

МетодОписание
center(width[, fill])По центру
ljust(width[, fill])По левому краю
rjust(width[, fill])По правому краю
zfill(width)Дополняет нулями слева

Кодирование и форматирование

МетодОписание
encode(encoding="utf-8", errors="strict")Строка в bytes
format(*args, **kwargs)Форматирование по шаблону
format_map(mapping)Форматирование из словаря

Примеры

s = "  Hello, World!  "print(s.strip())print(s.strip().lower())print(s.replace("World", "Python"))print(s.strip().split(", "))print(s.find("World"))print(s.count("l"))print("a,b,c".split(","))print("a,b,c".rsplit(",", 1))print("a b  c".split())print("one\ntwo\nthree".splitlines())print("key=value=x".partition("="))print("-".join(["a", "b", "c"]))print("42".zfill(5))print("abc".center(9, "*"))print("file.txt".removesuffix(".txt"))print("Hello".startswith(("He", "Ha")))

translate

table = str.maketrans("абв", "abc")print("абвгд".translate(table))remove_digits = str.maketrans("", "", "0123456789")print("a1b2c3".translate(remove_digits))

Сравнение без учёта регистра

print("Straße".lower() == "STRASSE".lower())print("Straße".casefold() == "STRASSE".casefold())

Результат: False и True.

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

name = "Anna"score = 93.456print(f"{name}: {score:.1f}")print(f"{name:>10}|")print(f"{name:<10}|")print(f"{name:^10}|")print(f"{name:*^10}")print(f"{255:#x}")print(f"{score=}")print(f"{name!r}")print("{0} и {1}, {0}".format("a", "b"))print("{x}-{y}".format(x=1, y=2))print("%s=%d" % ("x", 5))

Мини-язык спецификаций

Формат [[fill]align][sign][#][0][width][,][.precision][type]:

ЧастьЗначения
align<, >, ^, =
sign+, -, пробел
type для чиселd, b, o, x, X, e, f, g, %
type для строкs

Unicode и кодировки

text = "Привет"data = text.encode("utf-8")print(data)print(len(text), len(data))print(data.decode("utf-8"))print(text.encode("cp1251"))print(ord("A"), chr(65))print("\u0416")

Ошибки кодирования можно обрабатывать параметром errors: "strict", "ignore", "replace", "backslashreplace".

print("héllo".encode("ascii", errors="replace"))print("héllo".encode("ascii", errors="ignore"))

Для нормализации Unicode (например, é как один символ или как два) есть модуль unicodedata:

import unicodedataa = "\u00e9"b = "e\u0301"print(a == b)print(unicodedata.normalize("NFC", a) == unicodedata.normalize("NFC", b))

Производительность

Из-за неизменяемости склейка строк в цикле через += создаёт много временных объектов. Лучше собрать части в список и вызвать join:

parts = []for i in range(5):    parts.append(str(i))result = ",".join(parts)print(result)

Задания

  1. Реализуйте функцию подсчёта частоты слов без учёта регистра и пунктуации.
  2. Напишите функцию, превращающую snake_case в camelCase.
  3. Проверьте, является ли строка анаграммой другой строки.