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

Раздел: Основы Python -> Строковые методы

Основные строковые методы

В Python строки являются неизменяемыми последовательностями символов. Для работы с ними существует множество встроенных методов. Рассмотрим наиболее полезные из них.

Как разбить строку на подстроки?

Основной метод - str.split(). Он разделяет строку по указанному разделителю и возвращает список строк.

text = "один,два,три"
result = text.split(",")
print(result)

S split python (метод split() для строк python)

['один', 'два', 'три']

Upper lower python (методы upper и lower в python)

Если разделитель не указан, разбиение происходит по любым пробельным символам.

text = "один два   три\nчетыре"
print(text.split())

Python str methods (строковые методы python)

['один', 'два', 'три', 'четыре']

Типичные ошибки

  • Забывание указать разделитель, когда строка содержит запятые с пробелами - элементы будут содержать лишние пробелы.
  • Попытка разбить пустую строку: "".split() возвращает пустой список, а не список с пустой строкой.

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

Метод str.join() объединяет элементы итерируемого объекта, вставляя между ними заданную строку-разделитель.

words = ["Python", "это", "круто"]
sentence = " ".join(words)
print(sentence)
Python это круто

Типичная ошибка

Элементы должны быть строками. Если список содержит числа, потребуется преобразование: "".join(map(str, [1,2,3])).

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

Методы str.upper() и str.lower() возвращают копию строки в верхнем или нижнем регистре. Исходная строка не меняется.

name = "Python"
print(name.upper())
print(name.lower())
PYTHON
python

Типичная ошибка

Забывание, что строки неизменяемы: вызов name.upper() без присваивания не изменит переменную name.

Как удалить лишние пробелы в начале и конце строки?

Метод str.strip() удаляет пробельные символы (или указанную подстроку) с обоих концов. Аналоги lstrip() и rstrip() удаляют только слева или справа.

text = "   привет   "
print(text.strip())
print(text.lstrip())
print(text.rstrip())
привет
привет   
   привет

Типичная ошибка

Использование strip() с аргументом - удаляются все символы из переданной строки, а не подстрока целиком.

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

Метод str.replace() заменяет все вхождения старой подстроки на новую. Можно указать максимальное количество замен.

text = "один, один, один"
print(text.replace("один", "раз"))
print(text.replace("один", "раз", 2))
раз, раз, раз
раз, раз, один

Типичная ошибка

Замена регистрозависима. Для регистронезависимой замены требуется предварительно привести строку к одному регистру или использовать регулярные выражения.

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

Метод str.find() возвращает индекс начала подстроки или -1, если подстрока не найдена. Аналог index() вызывает исключение ValueError.

text = "Привет, мир!"
print(text.find("мир"))
print(text.find("Python"))
8
-1

Типичная ошибка

Путать find() и index(). Если подстрока может отсутствовать, безопаснее использовать find().

Как проверить, начинается или заканчивается строка определенной подстрокой?

Методы str.startswith() и str.endswith() возвращают True или False. Можно передавать кортеж для проверки нескольких вариантов.

filename = "data.csv"
print(filename.startswith("data"))
print(filename.endswith((".csv", ".txt")))
True
True

Типичная ошибка

Передача одного строкового аргумента без кортежа для нескольких вариантов - проверка будет только по этой строке.

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

Метод str.format() подставляет значения в места, обозначенные фигурными скобками. Поддерживает именованные и позиционные аргументы.

name = "Анна"
age = 25
text = "Меня зовут {name}, мне {age} лет."
print(text.format(name=name, age=age))
Меня зовут Анна, мне 25 лет.

Типичная ошибка

Несоответствие количества аргументов и заполнителей. Python 3.6+ рекомендует использовать f-строки для простоты.

Как проверить, состоит ли строка только из цифр или букв?

Методы isdigit(), isalpha(), isalnum() и другие проверяют все символы строки.

print("123".isdigit())
print("abc".isalpha())
print("abc123".isalnum())
print("abc 123".isalnum())
True
True
True
False

Типичная ошибка

isalnum() возвращает False, если есть пробелы или знаки препинания. Для проверки на число с плавающей точкой эти методы не подходят.

Дополнительные примеры работы со строками

Транслитерация символов с помощью translate

Методы str.maketrans() и str.translate() позволяют заменить одни символы на другие.

Пример
table = str.maketrans("helo", "HELO")
print("hello world".translate(table))
HELLO WORLD

Разделение строки на три части с partition

Метод str.partition() делит строку по первому вхождению разделителя и возвращает кортеж из трех элементов.

Пример
text = "Python - язык программирования"
print(text.partition(" - "))
('Python', ' - ', 'язык программирования')

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

Метод str.splitlines() разбивает строку по границам строк.

Пример
text = "строка1\nстрока2\r\nстрока3"
print(text.splitlines())
['строка1', 'строка2', 'строка3']

Дополнение строки нулями слева

Метод str.zfill() добавляет нули в начало строки до указанной длины.

Пример
num = "42"
print(num.zfill(5))
00042

Выравнивание строки по центру, левому и правому краю

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

Пример
text = "Python"
print(text.center(10, "*"))
print(text.ljust(10, "-"))
print(text.rjust(10, "_"))
**Python**
Python----
____Python

Кодирование и декодирование строк

Методы encode() и decode() преобразуют строку в байтовое представление и обратно.

Пример
text = "Привет"
encoded = text.encode("utf-8")
print(encoded)
decoded = encoded.decode("utf-8")
print(decoded)
b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'
Привет

Подсчет вхождений подстроки

Метод str.count() возвращает количество непересекающихся вхождений подстроки.

Пример
text = "раз, два, раз, три"
print(text.count("раз"))
2

Управление табуляцией с expandtabs

Метод str.expandtabs() заменяет символы табуляции на заданное количество пробелов.

Пример
text = "a\tb\tc"
print(text.expandtabs(10))
a         b         c

Форматирование с использованием словаря

Метод str.format_map() принимает словарь, ключи которого используются как имена заполнителей.

Пример
data = {"name": "Иван", "age": 30}
template = "Имя: {name}, Возраст: {age}"
print(template.format_map(data))
Имя: Иван, Возраст: 30

F-строки как альтернатива format

F-строки (Python 3.6+) позволяют вставлять выражения непосредственно в строку перед ее созданием.

Пример
name = "Мария"
age = 28
print(f"Имя: {name}, Возраст: {age}")
Имя: Мария, Возраст: 28

Удаление префикса и суффикса (Python 3.9+)

Методы removeprefix() и removesuffix() удаляют указанную подстроку с начала или конца строки.

Пример
url = "https://example.com"
print(url.removeprefix("https://"))
print(url.removesuffix(".com"))
example.com
https://example

Преобразование регистра: capitalize, title, swapcase

Эти методы изменяют регистр строки специфическим образом.

Пример
text = "привет МИР"
print(text.capitalize())
print(text.title())
print(text.swapcase())
Привет мир
Привет Мир
ПРИВЕТ мир

Строковые методы Python - comments

En
Python str methods (python)