Баннер мобильный (3) Пройти тест

Функция split() в Python: как разделить строку на части

Учимся разделять строки

Разбор

11 февраля 2025

Поделиться

Скопировано
Функция split() в Python: как разделить строку на части

Содержание

    Поговорим о некоторых действиях над строками в языке Python. Узнаем, как разделять строки при помощи встроенной функции split() и при помощи функции split() из модуля re.

    Некоторые операции со строками в Python

    В языке программирования Python, как и в большинстве других, строки играют очень большую роль. Ведь с их помощью можно попросить пользователя ввести какие-либо важные данные или сообщить об ошибке, а также их можно обрабатывать самыми разными способами и вывести результат обработки также в виде строки.

    Вот таким нехитрым способом можно создать строку в Python и вывести ее в консоль:

    hello = 'Привет!'
    
    print(hello)

    В итоге получим следующий вывод в консоли:

    (env) alex@alex-pc:~$ /home/alex/env/bin/python3 /home/alex/test.py
    Привет!

    Рассмотрим некоторые операции со строками. Конкатенация или по другому сращение строк происходит так:

    hello = 'Привет, '
    
    world = 'мир!'
    
    print(hello + world)

    Результат:

    (env) alex@alex-pc:~$ /home/alex/env/bin/python3 /home/alex/test.py
    Привет, мир!

    А так можно продублировать строку:

    peace_to_world = 'Миру-мир! '
    
    print(peace_to_world * 6)

    Результат выполнения:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    Миру-мир! Миру-мир! Миру-мир! Миру-мир! Миру-мир! Миру-мир!

    А вот таким способом можно получить длину строки:

    s = 'Skillfactory'
    
    print(len(s))

    Результат:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    12

    Следующий пример демонстрирует получение доступа к отдельным символам строки по индексу. Здесь не стоит забывать, что индексация начинается с нуля, то есть первый символ будет иметь нулевой индекс:

    s = 'Skillfactory'
    
    print(s[0])
    print(s[3])
    print(s[6])

    Результат выполнения:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    S
    l
    a

    Далее рассмотрим, как на языке Python можно разделять строки.

    Разделение строк при помощи встроенной функции split()

    Функция split() позволяет достаточно просто производить разделение строк. Функция является встроенной и потому ее использование не требует установки дополнительных пакетов и импортирования каких-либо сторонних модулей.

    Самый простой способ использования этой функции — это вызвать ее для какой-либо строки без аргументов. В этом случае разделение строки произойдет по пробелам:

    str = 'Сегодня на улице прекрасная погода'
    
    print(str.split())

    В консоли получим следующий вывод:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Сегодня', 'на', 'улице', 'прекрасная', 'погода']

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

    str = 'Сегодня на\nулице\tпрекрасная погода'
    
    print(str.split())

    Результат:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Сегодня', 'на', 'улице', 'прекрасная', 'погода']

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

    Для примера возьмем строку состоящую из названий шести языков программирования. Перечислим их через запятую и ее же укажем в качестве разделителя:

    str = 'Python,Java,PHP,Lua,Rust,Swift'
    
    print(str.split(','))

    В итоге получим список:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Python', 'Java', 'PHP', 'Lua', 'Rust', 'Swift']

    Теперь добавим второй аргумент. Пусть он будет равен трем, то есть разрешим функции сделать только три разделения:

    str = 'Python,Java,PHP,Lua,Rust,Swift'
    
    print(str.split(',', 3))

    Получим уже такой список:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Python', 'Java', 'PHP', 'Lua,Rust,Swift']

    А что если разделитель повторяется несколько раз подряд? Рассмотрим пример:

    str = 'Python$$$Java'
    
    print(str.split('$'))

    Вывод в консоли:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Python', '', '', 'Java']

    Как видим, были созданы две пустые строки. Но, если передать на вход функции в качестве сепаратора последовательность из трех символов ($$$), то никаких пустых строк не будет:

    str = 'Python$$$Java'
    
    print(str.split('$$$'))

    Результат:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Python', 'Java']

    Далее рассмотрим еще одну функцию split().

    Функция split() из модуля re

    Данная функция позволяет использовать для разделения строк регулярные выражения. Перед использованием функции сначала необходимо импортировать модуль re:

    import re

    Функция на вход принимает несколько аргументов. В качестве первого аргумента выступает паттерн (шаблон), которым может быть регулярное выражение или обычная строка. В согласии с шаблоном будет происходить разделение строки. Сама разделяемая строка идет вторым аргументом. Третьим аргументом можно указать максимальное число разделений.

    Также есть возможность использовать и четвертый аргумент, который позволяет при помощи специальных флагов управлять интерпретацией регулярного выражения. Функция вызывается для объекта re. Приведем несложный пример:

    str = 'Привет, человек! Как твои дела? Надеюсь, что всё хорошо'
    
    split_str = re.split(r'\W+', str)
    
    print(split_str)

    Регулярное выражение r’\W+’ означает все символы, которые не входят в алфавит. В приведенной строке таковыми являются запятая, восклицательный и вопросительный знаки, а также пробелы. Именно по этим символам и будет разбиваться строка. В результате получим:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['Привет', 'человек', 'Как', 'твои', 'дела', 'Надеюсь', 'что', 'всё', 'хорошо']

    Следующий пример показывает, как можно применять флаги для интерпретации шаблона в данной функции:

    str = '1d2D3d4D5d6'
    
    split_str = re.split('d', str, flags=re.IGNORECASE)
    
    print(split_str)

    Указанный флаг заставляет разделять строку не в строгом соответствии с шаблоном, а с игнорированием регистра, в котором записаны символы шаблона. В качестве шаблона у нас указан символ d, а значит при разделении строки будет учитываться и символ D. В итоге получим такой вывод в консоли:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['1', '2', '3', '4', '5', '6']

    Теперь используем все четыре аргумента функции:

    str = '1d2D3d4D5d6'
    
    split_str = re.split('d', str, 4, flags=re.IGNORECASE)
    
    print(split_str)

    Результат:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    ['1', '2', '3', '4', '5d6']

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

    Задание для самостоятельного выполнения

    Напишите программу на языке Python, которая позволяет пользователю ввести с клавиатуры требующую разделения строку, шаблон, по которому строка должна разделяться и максимальное число разделений. Результат работы программы нужно вывести в консоль.

    Решение

    Для ввода будем использовать функцию input(). Создадим переменные для шаблона и разделяемой строки. В самом начале исходника не забываем импортировать модуль re:

    import re
    
    pattern = input('Введите шаблон: ')
    
    str = input('Введите строку: ')

    Теперь надо ввести максимальное количество разделений. Здесь нам понадобится функция int(), которая преобразует введенную пользователем строку в целое число:

    max_split = int(input('Введите максимальное количество разделений: '))

    Все переменные созданы и далее их можно подавать на вход функции split():

    split_str = re.split(pattern, str, max_split)

    Результат выводим при помощи функции print():

    print(split_str)

    Весь исходник будет выглядеть таким образом:

    import re
    
    pattern = input('Введите шаблон: ')
    
    str = input('Введите строку: ')
    
    max_split = int(input('Введите максимальное количество разделений: '))
    
    split_str = re.split(pattern, str, max_split)
    
    print(split_str)

    Пример работы программы:

    (env) alex@alex-pc:~/Projects/py-str$ /home/alex/env/bin/python3 /home/alex/Projects/py-str/test.py
    Введите шаблон: #
    Введите строку: Люди#хотят#мира#на#Земле           
    Введите максимальное количество разделений: 2
    ['Люди', 'хотят', 'мира#на#Земле']

    Подведем итоги

    • Строки играют важную роль практически во всех языках программирования, в том числе и в Python.
    • В Python строки можно складывать, дублировать и выполнять над ними некоторые другие действия.
    • Для разделения строк при помощи простых строковых сепараторов можно пользоваться встроенной функцией split(). Для ее использования не нужно производить установку дополнительных пакетов и импорты модулей.
    • Для разделения строк с использованием регулярных выражений существует функция split() из модуля re.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии