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

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

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

До кінця підручника ви навчитеся наступному:

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

Давайте почнемо!

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

Ось загальний синтаксис використання методу split() Python для будь-якого дійсного рядка:

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Тут рядок може бути будь-яким дійсним рядком Python.

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

  • sep позначає роздільник, на який ви хочете розділити рядок. Його слід вказати як рядок.
  • maxsplit — це ціле число, яке вказує, скільки разів ви хочете розділити рядок.

Їх значення за замовчуванням використовуються, якщо ви не вказуєте додаткові параметри.

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

Формулювання синтаксису простою мовою:

Метод split() розділяє рядок maxsplit кількість разів при появі роздільника, визначеного параметром sep.

Тепер, коли ми вивчили синтаксис методу split() Python, давайте перейдемо до кодування деяких прикладів.

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

Якщо у вас є Python 3 встановлений на вашій машині, ви можете кодувати за допомогою цього посібника, запустивши наведені нижче фрагменти коду в Python REPL.

  Як видалити профілі на Hulu

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

$ python
$ python -i

▶️ Ви також можете спробувати ці приклади в редакторі Python від techukraine.net.

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

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Як видно вище, рядок розділено на всі випадки пропуску.

Розділіть рядок Python за появою роздільників

#1. Як перший приклад, давайте розділимо рядок py_str з подвійним підкресленням (__) як роздільником.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

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

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

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

#3. Задамо кілька запитань:

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

Ось приклад:

Намагаємося розбити py_str на появу зірочки

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

— який не буває.

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

У наступному розділі ми побачимо, як можна використовувати метод 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() об’єкта файлу f.
  • Розділяє вміст при появі багатокрапки роздільника (…) на список str_list.
  Що таке GIFV і що це означає для вас

Перебирає str_list для доступу до кожного рядка та друкує його.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://techukraine.net.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Ось результат.

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

Розбийте рядок Python на фрагменти

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

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

Це показано нижче.

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

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

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

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

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

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

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

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

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

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

  Найкращі альтернативи масштабування для відеочату

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

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

Розділіть рядок Python на фрагменти за допомогою роздільника

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

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

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

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

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

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

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

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

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

Підведенню

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

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

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

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