Метод split() в Python: как разбить строку — синтаксис и примеры

Парсим и очищаем текстовые данные

Метод split() в Python: как разбить строку — синтаксис и примеры

Метод split() в Python — это встроенный метод строк, который разбивает строку на список подстрок по заданному разделителю. Если разделитель не указан, split() делит строку по пробельным символам и автоматически убирает лишние пробелы. По сути, split в Питоне — это быстрый инструмент для парсинга и первичной очистки сырых текстовых данных. 

Сегодня подробно разберём его синтаксис, частые ошибки и покажем реальные примеры работы.

Что такое метод split() в Python 

Метод split в Питоне — это удобный инструмент для работы с сырыми данными. Допустим, вы спарсили лог сервера или получили от API длинную строку с email-адресами через запятую. Работать с таким текстовым монолитом в коде жутко неудобно — его нужно как-то разрезать на отдельные элементы. Здесь и используют split().

С технической точки зрения метод split() — это встроенный метод класса str. В отличие от навороченных регулярных выражений, он вшит в сам интерпретатор и отрабатывает проще и быстрее.

Здесь нужно запомнить важное правило механики языка: при вызове split() Python возвращает новый список (list) подстрок; исходная строка при этом не изменяется — строки в Python неизменяемы (immutable).

Синтаксис метода split() 

Синтаксис метода в Python 3 предельно лаконичен. Официальная документация описывает метод split() так:

str.split(sep=None, maxsplit=-1)

Как видите, под капотом эта встроенный метод класса str, который имеет очень простую сигнатуру. Метод принимает два необязательных параметра: 

  1. sep — разделитель. Если не указан (None), строка разбивается по любым пробельным символам;
  2. maxsplit — максимальное количество разбиений слева направо.

Если оставить скобки пустыми — интерпретатор всё сделает за вас, но если передать конкретный аргумент, результат изменится.

Как работает split() в Python 

Итак, разберём, как работает split на уровне интерпретатора. Процесс выглядит так: у вас есть монолитная строка, вы вызываете метод, он проходится по символам и возвращает новый список (list), где каждый элемент — это отдельная подстрока.

Самое интересное начинается, когда аргументы не переданы.

Если параметр sep не задан, split() объединяет несколько пробелов подряд в один разделитель и убирает ведущие и хвостовые пробелы — чего не делает split(‘ ‘), создающий пустые строки в списке.

То есть, если к вам по API прилетела корявая строка с табуляциями и переносами строк (\n, \t), пустой вызов метода всё это схлопнет и выдаст чистый список данных.

Полезный блок со скидкой

split() — первый метод, который реально начинаешь использовать каждый день. Логи, CSV, API-ответы — всё через него. Если тема зашла и хочется разобраться, как устроены строки, списки и всё остальное в Python, — держите промокод Практикума на любой платный курс: KOD (можно просто нажать). Он даст скидку при покупке и позволит сэкономить на обучении.

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

Практические примеры использования split() 

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

Пример 1: разбить строку по пробелу

Сервер прислал нам логи с кучей лишних пробелов, табуляций (\t) и переносов строк (\n). Наша задача — достать только сами слова.

log = " ERROR \t 2026-03-26 \n Timeout "
# Вызываем метод вообще без аргументов
clean = log.split() 
print(clean) 
Практические примеры использования split() 

Здесь мы использовали пустой вызов — если не передать аргумент, Питон проигнорирует длину пробелов между словами, схлопнет все лишнее и выдаст идеально чистый список.

Пример 2: разбить строку по произвольному символу

Юзер зарегистрировался в нашем приложении, и мы хотим понять — у него корпоративная почта или публичный сервис. Для этого нам нужно разбить строку по значку @:

email = "user@company.com"
# Разбиваем по собачке и берём второй элемент — индекс 1
domain = email.split("@")[1] 
print(domain) 
Практические примеры использования split() 

Строка разделилась на две части: [‘user’, ‘company.com’]. Так как индексация в Питоне начинается с нуля, под индексом [0] лежит логин, а под индексом [1] — нужный нам домен.

Пример 3: ограничение разбиения через maxsplit

Допустим, у нас есть лог вида УРОВЕНЬ: ТЕКСТ: ДЕТАЛИ. Нам нужно отделить только уровень ошибки (INFO), а сам текст сообщения оставить целым.

msg = "INFO: User login: admin"
# Режем по двоеточию, но только один раз!
parts = msg.split(":", 1) 
print(parts) 
Практические примеры использования split()

Если бы мы не передали maxsplit=1, метод разрезал бы строку на три части: [‘INFO’, ‘ User login’, ‘ admin’]:

Практические примеры использования split()

А так он сделал один «разрез» и остановился, сохранив исходное сообщение нетронутым.

Пример 4: парсинг сырых данных (CSV-формат)

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

row = "id:10,status:ok,price:250"
# Явно указываем запятую как разделитель
data = row.split(",") 
print(data) 
Практические примеры использования split()

Метод прошёлся по строке, нашёл каждую запятую, «разрезал» строку в этих местах и сложил получившиеся куски в новый массив. Запятые при этом уничтожились.

Пример 5: split() в цикле и list comprehension

Нам пришла строка с числами через пробел “10 20 30”. Метод split() вернёт нам список строк [’10’, ’20’, ’30’], но для дальнейших вычислений нужен список чисел (int).

raw_numbers = "10 20 30 40"
# Разбиваем строку и через цикл превращаем каждый элемент в число
result =[int(num) for num in raw_numbers.split()]
print(result) 
split() в цикле и list comprehension

Это то, что вы будете использовать часто, особенно при решении алгоритмических задач. Мы вызываем split(), чтобы получить массив подстрок, и тут же прогоняем его через цикл в генераторе списка (list comprehension). Функция int() применяется к каждому элементу, и на выходе мы получаем готовый массив целых чисел.

Сравнение split(), rsplit() и partition() 

На собеседованиях могут спросить: «Чем отличается обычный split от rsplit или partition?». Спойлер: если вы не используете лимиты разбиения, то split и rsplit работают абсолютно одинаково.

Обычный split в Python режет строку слева направо. Если вам нужно откусить только кусок с конца, например, достать расширение из файла archive.tar.gz, логичнее использовать rsplit() в связке с параметром maxsplit=1. Он пойдёт справа налево и остановится после первого же совпадения.

filename = "archive.tar.gz"
# Обычный split слева направо с лимитом 1
print(filename.split(".", 1)) 
Сравнение split(), rsplit() и partition() 
# rsplit справа налево с лимитом 1
print(filename.rsplit(".", 1)) 
Сравнение split(), rsplit() и partition() 

А вот partition() — это вообще другая история. Этот метод ищет только первое вхождение разделителя и возвращает кортеж ровно из трёх элементов: кусок до разделителя, сам разделитель и кусок после. Идеально для парсинга конфигов вида key=value.

config = "PORT=8080"
# Метод всегда возвращает кортеж из 3 элементов
print(config.partition("=")) 
Сравнение split(), rsplit() и partition() 

А вот так разработчики распаковывают эти данные на лету:

key, sep, value = config.partition("=")
print(key)   # Выведет: 'PORT'
print(value) # Выведет: '8080'
Сравнение split(), rsplit() и partition() 

Чтобы не запутаться, сверяйтесь с таблицей:

МетодНаправление поискаЧто возвращаетТипичный юзкейс
split()Слева направоСписок (list)Разбить CSV-строку, спарсить логи
rsplit()Справа налевоСписок (list)Откусить расширение файла или конец пути
partition()Слева направо (1 раз)Кортеж из 3 элементовБыстрый парсинг конфигураций ключ=значение

Типичные ошибки с split()

Метод кажется очень простым, но новички стабильно собирают им одни и те же грабли в продакшене.

Ошибка №1: AttributeError

Метод split() живет только внутри встроенного класса строк (str). Если вы достали данные из базы или JSON, а там оказался None или число, например, HTTP-статус 404, и вы попытались вызвать на нём .split(), ваш скрипт тут же упадёт с ошибкой AttributeError: ‘int’ object has no attribute ‘split’. Всегда проверяйте типы данных или принудительно приводите их к строке через str().

status_code = 404
# Падаем с грохотом:
print(status_code.split()) 
Типичные ошибки с split()
# Как надо: сначала приводим тип
print(str(status_code).split()) 
Типичные ошибки с split()

Ошибка №2: явный пробел

Мы уже говорили об этом выше, но повторим: если вы решили разделить строку по символу и вписали пробел руками — split(‘ ‘), вы сами себе враг. Два пробела подряд в исходном тексте дадут вам пустую строку в итоговом массиве, а если там затесалась ещё и табуляция \t — она вообще не обработается.

dirty_text = "word1  word2\tword3"
print(dirty_text.split(' ')) 
Типичные ошибки с split()
# Как надо:
print(dirty_text.split()) 
Типичные ошибки с split()

Ещё раз: пустой вызов split() без аргументов сам схлопывает все лишнее — и табы, и множественные пробелы.

Ошибка №3. Ловушка пустой строки

Как вы думаете, что будет, если попытаться разбить абсолютно пустую строку по какому-то разделителю? Например, выполнить код “”.split(“:”)? Результатом будет не пустой список [], а список с одним пустым элементом — [”].

empty_data = ""
result = empty_data.split(":")
print(result) 

Список не пустой:

Типичные ошибки с split()
print(len(result))
Типичные ошибки с split()

Об это часто ломаются циклы и проверки длины массива len(), которые не ожидают получить пустую строку вместо отсутствия данных. Поэтому всегда учитывайте этот крайний случай в логике.

Метод split() — это базовый и самый быстрый инструмент для парсинга, очистки логов и разделения сырых данных. Запомните трюк с пустым вызовом, используйте maxsplit для оптимизации и проверяйте типы данных.

Бонус для читателей

Если вам интересно погрузиться в мир ИТ и при этом немного сэкономить, держите наш промокод на курсы Практикума. Он даст вам скидку при оплате, поможет с льготной ипотекой и даст безлимит на маркетплейсах. Ладно, окей, это просто скидка, без остального, но хорошая.

Вам может быть интересно
easy