Як використовувати метод split() у Python

У цьому посібнику ви ознайомитесь з принципами використання методу `split()` в Python для розбиття текстової стрічки на окремі елементи списку.

При обробці текстових даних у Python, існує ряд вбудованих методів для маніпулювання рядками. Ці методи дозволяють, наприклад, перетворювати текст у верхній регістр, сортувати його та багато іншого. Одним з таких методів є `.split()`, який перетворює текстовий рядок на список окремих рядків. Розглянемо цей метод детальніше на практичних прикладах.

Після вивчення цього посібника ви зможете:

  • зрозуміти механізм роботи методу `.split()`.
  • налаштовувати розділення рядка за допомогою параметрів `sep` і `maxsplit`.

Розпочнімо!

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

Загальний синтаксис використання методу `split()` виглядає наступним чином:

string.split(sep, maxsplit)

# Параметри:
sep, maxsplit

# Повертає:
Список рядків

Тут `string` — це будь-який коректний рядок Python.

Параметри `sep` та `maxsplit` є необов’язковими.

  • `sep` визначає роздільник, за яким рядок буде поділено. Він повинен бути вказаний як рядок.
  • `maxsplit` — це ціле число, що вказує, скільки разів потрібно розділити рядок.

Якщо ці параметри не вказані, використовуються значення за замовчуванням.

  • Якщо параметр `sep` не вказано, то за роздільник за замовчуванням використовуються пробіли.
  • Якщо параметр `maxsplit` не вказано, його значенням за замовчуванням є -1, що означає, що рядок буде розділено на всі можливі випадки роздільника.

Простими словами, метод `split()` розбиває рядок на частини, використовуючи роздільник, вказаний в параметрі `sep`, і виконує розбиття не більше ніж `maxsplit` разів.

Тепер, коли ми ознайомилися з синтаксисом, перейдемо до практичних прикладів.

Розбиття рядка Python на список рядків

Якщо на вашому комп’ютері встановлено Python 3, ви можете практикуватися разом зі мною, виконуючи приклади коду в Python REPL.

Щоб запустити REPL, виконайте одну з наступних команд у терміналі:

$ python
$ python -i

▶️ Ви також можете використовувати онлайн редактор Python на techukraine.net для практики.

У цьому прикладі `py_str` є рядком. Давайте застосуємо метод `.split()` до `py_str` без будь-яких параметрів і розглянемо результат.

py_str = "Вивчи, як використовувати split() в Python"
py_str.split()

# Вивід
['Вивчи,', 'як', 'використовувати', 'split()', 'в', 'Python']

Як видно, рядок розділено на всі фрагменти, де є пробіли.

Розділення рядка Python за роздільниками

#1. Розглянемо приклад, де ми розділимо рядок `py_str`, використовуючи подвійне підкреслення (__) як роздільник.

py_str = "Все__найкраще"
py_str.split(sep='__')

# Вивід
['Все', 'найкраще']

#2. Візьмемо інший приклад. Тут `py_str` складається з трьох речень, кожне з яких закінчується крапкою (.).

py_str = "Я люблю кодування. Python це круто. Я вивчаю Python у 2024"
py_str.split(sep='.')

# Вивід
['Я люблю кодування', ' Python це круто', " Я вивчаю Python у 2024"]

▶️ Коли ми застосовуємо метод `.split()` до цього рядка, використовуючи `’.’` як роздільник, результуючий список містить три речення, як показано вище.

#3. Розглянемо наступні питання:

  • Що буде, якщо роздільник не зустрічається в рядку?
  • Як в такому випадку відбудеться розбиття?

Ось приклад:

Спробуємо розбити `py_str` за зірочкою, якої в ньому немає.

py_str = "Цей рядок не містить зірочки."
py_str.split(sep='*')

# Вивід
['Цей рядок не містить зірочки.']

Оскільки роздільник не знайдено, у результаті ми отримаємо список, що містить весь початковий рядок.

У наступному розділі ми розглянемо, як можна застосувати метод `split()` до вмісту текстового файлу.

Розбиття вмісту файлу Python

При обробці текстових файлів у Python, часто виникає необхідність розділити їхній вміст на частини, використовуючи певний роздільник. Це полегшує подальшу обробку даних.

Ось приклад текстового файлу:

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

Наведений вище фрагмент коду показує, як розділити вміст текстового файлу.

  • Код використовує менеджер контексту `with` для відкриття та обробки текстового файлу “sample.txt”.
  • Він зчитує весь вміст файлу за допомогою методу `.read()`.
  • Потім розділяє вміст на список `str_list`, використовуючи три крапки (…) як роздільник.

Нарешті, код перебирає `str_list` і виводить кожен елемент.

# Вивід
Це приклад текстового файлу
Він містить інформацію про
Початок роботи з <a href="https://techukraine.net.com/pcap-certification/">програмуванням на Python</a>
Згідно з опитуванням розробників StackOverflow за 2022 рік
Python є однією з найулюбленіших мов програмування
То що ти чекаєш? Починай вчити!

Ось отриманий вивід.

В якості вправи, спробуйте розбити вміст текстового файлу, використовуючи довільний роздільник.

Розбиття рядка Python на частини

Якщо розділити рядок один раз, ви отримаєте дві частини; розділивши його двічі, ви отримаєте три частини.

📋 Загалом, якщо ви розіб’єте рядок K разів, ви отримаєте K + 1 фрагментів.

Це показано на прикладі нижче.

Як працює параметр `maxsplit` (Зображення автора)

py_str = "Фрагмент#1  Я великий фрагмент, Фрагмент#2"
py_str.split(maxsplit=1)

# Вивід
['Фрагмент#1', " Я великий фрагмент, Фрагмент#2"]

#1. Встановлюємо значення параметра `maxsplit` на 1. Роздільник не вказано, тому розбиття відбувається за пробілами.

Незважаючи на те, що другий фрагмент містить пробіли, розбиття більше не відбувається, оскільки параметр `maxsplit` має значення 1.

py_str = "Фрагмент#1 Фрагмент#2 Я один великий Фрагмент#3, хоч і міщу пробіли"
py_str.split(maxsplit=2)

# Вивід
['Фрагмент#1',
 'Фрагмент#2',
 "Я один великий Фрагмент#3, хоч і міщу пробіли"]

#2. Збільшимо значення `maxsplit` до 2 і подивимося, як відбудеться розбиття в наступному прикладі.

Як і в попередньому прикладі, значення `maxsplit` визначає кількість розбитів. Ми отримуємо три фрагменти, розділені після першого та другого входження пробілу.

#3. Що станеться, якщо встановити значення `maxsplit` більше, ніж кількість входжень роздільника?

py_str = "Тут, є, лише, 4, коми"
py_str.split(maxsplit=8)

# Вивід
['Тут,', 'є,', 'лише,', '4,', 'коми']

У коді вище ми встановлюємо значення параметра `maxsplit` на 8, хоча рядок містить лише чотири коми.

В результаті метод `split` розділяє рядок `py_str` на всі чотири входження коми. Навіть якщо встановити для `maxsplit` від’ємне значення, наприклад, -7, розбиття відбудеться на всі входження роздільника.

Далі ми об’єднаємо все, що навчилися, та застосуємо обидва параметри, `sep` і `maxsplit`.

Розбиття рядка Python на частини з роздільником

py_str = "Фрагмент#1, Фрагмент#2, Я один великий Фрагмент#3, хоч і міщу ,"
py_str.split(sep = ',',maxsplit=2)

# Вивід
['Фрагмент#1', ' Фрагмент#2', " Я один великий Фрагмент#3, хоч і міщу ,"]

#1. Припустимо, нам потрібно розділити рядок `py_str` на три фрагменти за комою (,). Для цього ми встановимо значення `sep` на `,` і `maxsplit` на 2.

Як видно з вихідних даних, розбиття відбувається двічі, за першими двома входженнями роздільника.

#2. Роздільник `sep` не обов’язково має бути спеціальним символом. Це може бути послідовність спеціальних символів, як подвійне підкреслення, яке ми використовували раніше, або навіть підрядок.

py_str = "Тобі треба вивчати структури даних, вивчати алгоритми, і вчитися далі!"
py_str.split(sep = 'вивчати',maxsplit=2)

# Вивід
['Тобі треба ', ' структури даних, ', ' алгоритми, і вчитися далі!']

Встановимо рядок `вивчати` як аргумент `sep` і подивимося, як відбувається розбиття для різних значень `maxsplit`. Тут ми встановили `maxsplit` на 2.

py_str = "Тобі треба вивчати структури даних, вивчати алгоритми, і вчитися далі!"
py_str.split(sep = 'вивчати',maxsplit=-1)

# Вивід
['Тобі треба ', ' структури даних, ', ' алгоритми, і ', ' далі!']

#3. Якщо ви хочете розбити `py_str` за всіма входженнями рядка `вивчати`, можна викликати метод `.split()`, встановивши `sep = ‘вивчати’` без параметра `maxsplit`. Це еквівалентно встановленню значення `maxsplit` на -1, як показано в коді нижче.

Ми бачимо, що розбиття відбувається за всіма входженнями слова “вивчати”.

Підсумок

Сподіваюся, тепер ви розумієте, як використовувати метод `.split()` з рядками в Python.

  • Ось короткий огляд цього посібника:
  • Вбудований метод Python `.split()` розділяє рядок на список рядків.
  • Використовуйте `string.split()`, щоб розділити рядок на всі входження роздільника за замовчуванням (пробіл).

Використовуйте `string.split(sep,maxsplit)`, щоб розділити рядок `maxsplit` кількість разів за роздільником `sep`. Отриманий список містить `maxsplit+1` елементів.

Наступним кроком ви можете вивчити, як перевірити, чи є рядки Python паліндромами або анаграмами.