У цьому посібнику ви ознайомитесь з принципами використання методу `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 паліндромами або анаграмами.