Рубріки: Теория

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

Сергій Бондаренко

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

Метод split() в Python используется для разделения строки на подстроки на основе заданного разделителя. 

Этот метод возвращает список подстрок, полученных путем разделения исходной строки.

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

Назначение метода split()

Так как метод split() обрабатывает текст, соответственно и задачи, которые можно решать с его помощью, относятся к анализу текстовых данных:

  • Разделять строку на слова для дальнейшей обработки каждого слова отдельно.
  • Делить строки на подстроки по определенному символу или набору символов для дальнейшей обработки каждой подстроки отдельно.
  • Разделять строки на подстроки по определенному разделителю для получения списка значений. Например, при чтении данных из файла CSV.
  • Разделять строки на подстроки по определенному разделителю для получения списка параметров, например, при обработке URL-адресов. Ссылки можно «делить» на отдельные элементы, такие как протокол, имя хоста, путь и т. д.
  • Идентифицировать пути для файловой системы, отделяя названия директорий и имена файлов.
  • Делить строки на подстроки по определенному разделителю для получения списка команд, например, при обработке командной строки.

Синтаксис функции split()

Перейдем к синтаксису метода split(). Он выглядит так:

string.split([separator[, maxsplit]])

В этой записи:

  • string — это строка, которую нужно разделить.
  • separator — разделитель, по которому нужно разделить строку. Указывать его не обязательно. Если сепаратор не указан, то в качестве разделителя используется пробел.
  • maxsplit — параметр, указывающий на максимальное количество разделений, которые нужно сделать. Его тоже можно не указывать. Если этот параметр не определен, редактируемая строка будет разделена на все возможные подстроки.

Простейший пример использования метода split()

Рассмотрим простейший пример использования метода split(). Допустим, у нас есть строка, которая содержит список слов, разделенных пробелами:

sentence = "This is a simple sentence."

Мы можем разделить эту строку на отдельные слова, используя метод split():

words = sentence.split()

print(words)

Этот код выведет список слов, разделенных пробелами:

['This', 'is', 'a', 'simple', 'sentence.']

В этом примере метод split() разбивает строку sentence на подстроки по пробелам и возвращает список подстрок. Таким образом, мы получаем список words, который содержит все слова из исходной строки.

Разделение строк по нескольким разделителям

Метод split() в Python позволяет разделять строки на подстроки по одному разделителю. Но если нужно разделить строку по нескольким разделителям, то можно воспользоваться другими методами.

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

Использование регулярных выражений

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

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

import re

s = "Bondarenko,Markova.Velichko,Tkachenko"
words = re.split("[,.]", s)
print(words)  # ['Bondarenko', 'Markova', 'Velichko', 'Tkachenko']

В этом примере мы использовали регулярное выражение [,.], которое означает «разделители — запятые и точки». Функция re.split() разделяет строку s на подстроки по этим разделителям и возвращает список строк.

Использование метода replace()

Если нужно разделить строку по нескольким разделителям, которые заранее известны, можно воспользоваться методом replace(). Сначала нужно заменить все разделители на один и тот же символ, а затем использовать метод split() для разделения строки по этому символу.

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

s = "Bondarenko,Markova.Velichko,Tkachenko"
s = s.replace(",", ".")  # заменяем запятые на точки
words = s.split(".")
print(words)  # ['Bondarenko', 'Markova', 'Velichko', 'Tkachenko']

В этом примере мы заменяем все запятые на точки с помощью метода replace(), а затем разделяем строку по точкам с помощью метода split().

Научись комбинировать различные методы Python в своем коде на вечерних курсах от Mate Academy. Также доступен формат полного дня с оплатой после трудоустройства.

Использование генератора списка

Еще один способ разделения строки по нескольким разделителям — использование генератора списка. Для этого нужно создать список разделителей и затем использовать метод join() для объединения подстрок.

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

s = "Bondarenko,Markova.Velichko,Tkachenko"
separators = [",", "."]
for sep in separators:
    s = s.replace(sep, separators[0])
words = s.split(separators[0])
print(words)  # ['Bondarenko', 'Markova', 'Velichko', 'Tkachenko']

Здесь мы создаем список separators с разделителями и заменяем все разделители на первый разделитель в списке. Затем мы разделяем строку по первому разделителю с помощью метода split().

Парсинг CSV

Конкретный пример разделения строк по нескольким разделителям может быть использован, допустим, для парсинга информации о товарах из CSV-файла.

Предположим, у нас есть CSV-файл с информацией о товарах, где поля разделены запятой и точкой с запятой. Мы можем использовать метод split() для разбиения строки на части по этим разделителям:

import csv

with open('products.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='"')
    for row in reader:
        name, description, price = row[0].split(','), row[1].split('.'), row[2]
        # далее можно обработать полученные данные
        # например, добавить товар в базу данных интернет-магазина

Этот код открывает файл products.csv и создает читателя CSV-файла с разделителем ; и кавычкой-ограничителем ". Затем он перебирает каждую строку файла с помощью цикла for и обращается к методу split() для разделения значений поля.

Следующие строки кода показывают, как можно использовать результаты split() для отдельного разделения имени, описания и цены товара. Рассмотрим этот фрагмент кода:

name, description, price = row[0].split(','), row[1].split('.'), row[2]

В нем:

  • строка row[0] содержит значение поля "Название товара";
  • строка row[1] содержит значение поля "Описание";
  • строка row[2] содержит значение поля "Цена".

Мы вызываем метод split() для каждой строки, чтобы разделить ее на отдельные компоненты:

  • для строки "Название товара" мы используем , в качестве разделителя;
  • для строки "Описание" мы используем .;
  • для строки "Цена" никакой разделитель не нужен.

Мы сохраняем результаты split() в отдельные переменные: name, description и price, соответственно. Далее может потребоваться дополнительная обработка полученных данных, например, преобразование из строкового формата в нужный тип данных и сохранение их в базу данных интернет-магазина.

Пример обработки URL-адреса

Если вы занимаетесь аналитикой, извлекаете адреса из веб-приложения или проводите персонализацию по URL-ссылке вы можете использовать следующий подход: 

url = "https://www.example.com/products/item1?id=12345&color=blue"

# Разделяем URL-адрес на две части: доменное имя и остальную часть
domain, rest_of_url = url.split("://")

# Разделяем оставшуюся часть URL на путь и параметры запроса
path, query_params = rest_of_url.split("?")

# Разделяем параметры запроса на ключи и значения
params_list = query_params.split("&")
params_dict = {}
for param in params_list:
    key, value = param.split("=")
    params_dict[key] = value

# Выводим результаты
print("Domain:", domain)  # "www.example.com"
print("Path:", path)  # "/products/item1"
print("Query params:", params_dict)  # {"id": "12345", "color": "blue"}

В этом примере мы начинаем с URL-адреса https://www.example.com/products/item1?id=12345&color=blue. С помощью split() мы разделяем его на доменное имя www.example.com и остальную часть products/item1?id=12345&color=blue.

Затем мы разделяем оставшуюся часть на путь /products/item1 и параметры запроса id=12345&color=blue. Используя split() еще раз, мы разделяем параметры запроса на ключи и значения, сохраняем их в словаре params_dict, после чего выводим результаты.

Как разделить строку посередине

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

Например:

s = "HighloadToday является одним из ведущих онлайн-ресурсов"

half = len(s) // 2
s1, s2 = s[:half], s[half:]
print("")
print(s1)
print(s2)
print("")
print('Длина строки была',len(s))

На экране видим:

HighloadToday является одни

м из ведущих онлайн-ресурсов




Длина строки была 55

Чтобы исключить такую ошибку, можно использовать другой алгоритм разделения текста:

  • инициализируем строку, которую будем делить на две половины по словам;
  • разбиваем строку на отдельные слова и сохраняем их в списке words;
  • определяем индекс середины списка words, используя оператор целочисленного деления;
  • создаем первую половину строки, объединяя слова из списка words до middle_index с помощью метода join();
  • создаем вторую половину строки, объединяя слова из списка words после middle_index с помощью метода join();
  • выводим на экран первую, а затем вторую половину строки.

Вот пример кода, который разделяет строку по этой логике:

string = "HighloadToday является одним из ведущих онлайн ресурсов в Интернете"
words = string.split()
middle_index = len(words) // 2
first_half = " ".join(words[:middle_index])
second_half = " ".join(words[middle_index:])

print("")
print(first_half)  # HighloadToday является одним из
print(second_half)  # ведущих онлайн ресурсов в Интернете

Заключение

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

Изучаешь Python самостоятельно? С ментором это будет значительно быстрее. Приходи на курс Python Basic от Hillel, если ты совсем новичок, или Python Pro, если ты хочешь усовершенствовать свои знания.

Для закрепления материала мы предлагаем вам просмотреть видео:

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023