Функция split() в Python: как разделить строку на части
Безжалостно кромсаем строки в Python.
Иллюстрация: Оля Ежак для Skillbox Media
Строки в Python бывают очень длинными и часто содержат много лишних данных. Например, служебную информацию в лог-файлах приложений или ошибки пользовательского ввода. Чтобы получить из строки то, что действительно нужно, иногда её лучше разделить на части. Сделать это можно с помощью функции split(). Разбираем её синтаксис и возможности в этой статье.
Содержание
Что делает функция split() в Python
split() — функция в Python, которую используют для разделения строки на несколько частей. Она полезна, когда надо проанализировать текст или, например, получить данные из CSV-файлов и логов.
Базовый синтаксис функции split() выглядит так:
В примере выше:
- sep — разделитель, по которому разбивается исходная строка. По умолчанию или при указании None разделителями будут считаться любые пробельные символы (пробел, перевод строки, табуляция и другие).
- maxsplit — параметр, который определяет максимальное количество разбиений. По умолчанию (или если указано -1) строка разбивается полностью на все возможные подстроки.
Читайте также:
Как разделить строку в Python
Рассмотрим способы разделения строк с помощью функции split().
По пробелу
Самый частый кейс использования split () — разделение строки по пробелу. Для этого при вызове функции не надо указывать разделитель sep. Для примера создадим строку с перечислением имён через запятую, а после этого разделим её по пробелу и выведем результат в консоль с помощью print():
В итоге мы получили список подстрок, но важно отметить, что запятые остались рядом с именами. Это происходит из-за того, что мы разделяли строку по пробелам, а запятые — такие же символы, как буквы. Поэтому функция split() не удалила их.
Если использовать в строке символ табуляции (\t) и перевода строки (\n), то результат не изменится. Всё из-за того, что табуляция и перевод строки относятся к пробельным символам:
Читайте также:
По запятой или другому символу
Для разделения строки по запятой или любому другому символу в качестве аргумента функции split() можно указать разделитель. Для примера создадим строку с названиями животных на английском языке и разделим её по запятой. В итоге получим список, состоящий из отдельных слов:
В качестве разделителя можно использовать любые другие символы. В примере ниже мы разделяем строку по символу звёздочки *. Если разделитель встречается несколько раз подряд, то Python создаёт пустые строки:
По последовательности символов
Иногда строки содержат в себе уже готовые разделители в виде комбинаций символов. В таком случае функции split() можно передать последовательность.
В примере ниже есть строка text с данными анкеты пользователя, поля которой разделены с помощью двойного символа решётки (##). Передадим эту последовательность в split() и получим на выходе список подстрок в формате «ключ — значение»:
Читайте также:
По нескольким разделителям
С помощью регулярных выражений строку можно разбить по нескольким символам или последовательностям одновременно. Например, если надо выполнить разделение по запятой, точке, вопросительному знаку, пробелу и переносу строки, то следует передать в split() регулярное выражение r'[,.?\n ]+', в котором:
- квадратные скобки [] используются для указания набора символов, каждый из которых может быть разделителем;
- внутри скобок перечислены символы-разделители: запятая ,, точка ., вопросительный знак ?, перенос строки \n, пробел ‘ ’;
- знак + после квадратных скобок означает, что разделитель может включать один или несколько символов из набора.
Для работы с регулярными выражениями надо импортировать модуль re, а функция разделения строки будет выглядеть как re.split(r'[,.\n? ]+', text). В качестве первого аргумента следует передать регулярное выражение, а в качестве второго — разделяемую строку:
Ограничение количества разбиений
В качестве второго аргумента в функцию split() можно передать значение параметра maxsplit, который определяет максимальное количество разделений. Например, если указать maxsplit=3, то Python разделит строку 3 раза, а в результате будет 4 (maxsplit+1) элемента. По умолчанию значение maxsplit равняется -1, а разделение происходит столько раз, сколько возможно.
Для примера разделим строку по слешу только два раза. После второго разделения Python вернёт оставшуюся часть строки без изменений:
Читайте также:
В заключение
Функция split() — удобный инструмент для парсинга данных, чтения файлов и обработки пользовательского ввода. С её помощью можно быстро разделить строку на элементы для дальнейшей работы.
Функция поддерживает разделение строк по фиксированным символам и по шаблонам с использованием регулярных выражений. Параметр maxsplit позволяет ограничить количество получаемых подстрок.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!