Как разбить строку: split в питоне и соседние методы
Метод split в питоне разбивает строку и возвращает список частей. Без аргументов он использует пробельные символы. Параметр sep задает разделитель, а maxsplit ограничивает число разбиений.
Вы увидите пустые элементы, ошибки и отличия соседних методов.
Функция split python: синтаксис и вызов
str.split(sep=None, maxsplit=-1)Вызовите метод у строки, которую хотите разделить:
text = 'Love thy neighbor'
print(text.split())
# ['Love', 'thy', 'neighbor']Оба параметра необязательны. Вызов без аргументов тоже работает.
Подробности о методе собраны в документации str.split().
Метод split Python: разделитель и maxsplit
Метод принимает не более двух параметров:
sep– строка-разделитель. При значенииNoneметод объединяет соседние пробельные символы.maxsplit– максимальное число разбиений. Результат содержит доmaxsplit + 1элементов.
Значение maxsplit=-1 снимает ограничение. Метод использует его по умолчанию.
Разделитель может состоять из нескольких символов. Метод ищет всю последовательность целиком.
Связка map int input split полезна, когда значения из строки нужно сразу преобразовать в целые числа.
grocery = 'Milk, Chicken, Bread'
print(grocery.split(', '))
# ['Milk', 'Chicken', 'Bread']Метод не считает разделитель регулярным выражением. Шаблон обрабатывает функция re.split().
Результат split() и значение maxsplit
split() возвращает список строк. Порядок частей сохраняется.
Исходная строка при этом не меняется. Строки в Python неизменяемы.
Разбиение строки без ограничения
grocery = 'Milk, Chicken, Bread'
print(grocery.split(', '))
print(grocery.split(':'))['Milk', 'Chicken', 'Bread']
['Milk, Chicken, Bread']Второй вызов не нашел двоеточие. Поэтому список получил один элемент.
Ограничение числа разбиений
grocery = 'Milk, Chicken, Bread, Butter'
print(grocery.split(', ', 2))
print(grocery.split(', ', 1))
print(grocery.split(', ', 5))
print(grocery.split(', ', 0))['Milk', 'Chicken', 'Bread, Butter']
['Milk', 'Chicken, Bread, Butter']
['Milk', 'Chicken', 'Bread', 'Butter']
['Milk, Chicken, Bread, Butter']При maxsplit=2 метод делит строку два раза. Остаток остается последним элементом.
Значение 5 не добавляет лишние части. В строке только три разделителя.
При явном разделителе maxsplit=0 отключает разбиение. Строка возвращается одним элементом.
Пустые элементы и ошибки split()
Пустые элементы зависят от того, вызывается ли split() без аргументов или с явным пробелом; пустая строка и пустой разделитель требуют отдельной обработки, а распаковка — проверки числа частей. Учитывайте смысл пустых полей и структуру входной строки при выборе способа обработки.
Разница между split() и split(' ')
Вызов без аргумента объединяет соседние пробелы. Пробелы по краям не создают пустых элементов.
Перед разбиением иногда применяют strip(): strip Python убирает внешние пробелы, но не меняет разделители внутри строки.
print(' Milk\tChicken\nBread '.split())
# ['Milk', 'Chicken', 'Bread']
print(' Milk Bread '.split(' '))
# ['', 'Milk', '', 'Bread', '']Разделитель ' ' означает один обычный пробел. Повторные пробелы дают пустые элементы.
Пустая строка и пустые поля
print(''.split())
# []
print(''.split(','))
# ['']
print(',Milk,,Bread,'.split(','))
# ['', 'Milk', '', 'Bread', '']Явный разделитель сохраняет пустые поля. Так программа не теряет их позиции.
Фильтруйте пустые значения только при подходящей логике данных:
parts = ',Milk,,Bread,'.split(',')
parts = [part for part in parts if part != '']
print(parts)
# ['Milk', 'Bread']Пустой разделитель и ValueError
Пустая строка не подходит для параметра sep. Такой вызов вызывает ValueError:
'Milk'.split('')
# ValueError: empty separatorДля пробелов используйте text.split(). Для отдельных символов применяйте list(text).
Ошибка при распаковке результата
Число переменных должно совпадать с числом элементов списка.
key, value = 'name'.split('=', 1)
# ValueError: not enough values to unpack (expected 2, got 1)Сначала сохраните результат. Затем проверьте его длину:
parts = 'name=Anna'.split('=', 1)
if len(parts) == 2:
key, value = parts
print(key, value)
else:
print('В строке отсутствует знак =')
# name AnnaPython string methods: чем отличаются split(), rsplit(), partition() и re.split()
Выбирайте метод по направлению поиска и типу результата.
| Метод | Когда использовать | Результат |
|---|---|---|
split() | Разделить строку слева по обычному разделителю | Список строк |
rsplit() | Ограничить разбиение со стороны конца строки | Список строк |
partition() | Отделить часть по первому разделителю | Кортеж из трех строк |
re.split() | Разделить строку по регулярному выражению | Список строк |
Когда нужен rsplit()
Метод rsplit() начинает поиск справа.
print('archive.backup.zip'.rsplit('.', 1))
# ['archive.backup', 'zip']Такой вызов отделяет расширение файла. Метод split() при том же ограничении отделил бы имя слева.
Когда нужен partition()
partition() всегда возвращает три строки. Вторая строка содержит найденный разделитель.
print('name=Anna'.partition('='))
# ('name', '=', 'Anna')
print('name'.partition('='))
# ('name', '', '')Метод удобен для пары «ключ – значение». Проверка длины списка здесь не нужна.
Когда нужен re.split()
re.split() принимает регулярное выражение. Он подходит для нескольких разделителей.
import re
print(re.split(r'[,;]+', 'Milk;Chicken,,Bread'))
# ['Milk', 'Chicken', 'Bread']Шаблон [,;]+ объединяет подряд идущие запятые и точки с запятой.
Какой метод выбрать для задачи
- Обычный разделитель. Берите
split(). - Последний разделитель. Используйте
rsplit(). - Одна пара частей. Выбирайте
partition(). - Несколько вариантов разделителя. Применяйте
re.split().
Перед фильтрацией проверьте смысл пустых элементов. Они могут обозначать пропущенные поля исходной записи.
Совет от нашей редакции: задавайте maxsplit, когда остаток строки нужно сохранить целиком.
Популярное за неделю
- Как создать сайт самому в 2026: 4 способа + пошаговая инструкция 34 мин чтения
- Лучшие конструкторы для создания сайтов — плюсы, минусы и сравнения 22 мин чтения
- Как читать и записывать файлы Word в Python с помощью python-docx 5 мин чтения
- pandas read excel в Python: чтение листов и запись книг Excel 6 мин чтения
- Как работает функция print в Python: вывод, разделители и запись в файл 2 мин чтения
- Кавычки в Python и исправление eol while scanning string literal 6 мин чтения
Комментарии
Благодарю! То есть строку, превращает в массив?
['Milk', 'Chicken', 'Bread', 'Butter']
['Milk, Chicken, Bread, Butter']
вообще не понятно, а что там изменилось?
Обратите внимание на кавычки. На 1й строке это 4 разных элемента массива, а на 2й строке 1 элемент. Произошло слияние значений.