Как да използвате метода 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.

  Кое е по-добро между монитори 21:9 срещу 16:9?

Сега, след като научихме синтаксиса на метода split() на Python, нека продължим с кодирането на някои примери.

Разделете низ на Python в списък от низове

Ако имате Python 3 инсталиран на вашата машина, можете да кодирате с този урок, като изпълните следните кодови фрагменти в Python REPL.

За да стартирате REPL, изпълнете една от следните команди от терминала:

$ python
$ python -i

▶️ Можете също да изпробвате тези примери в Python редактора на pctechbg.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, може да се наложи да разделите съдържанието на файла – въз основа на разделител – за по-лесна обработка.

  Как да създадете няколко профила във Firefox

Ето примерен текстов файл:

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.

Преминава през str_list за достъп до всеки низ и го отпечатва.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://pctechbg.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, когато низът съдържа само четири запетаи.

  Как да създадете тирета, En тирета и Em тирета в Google Документи

Тук методът 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.

  • Ето обобщение на този урок:
  • Вграденият метод .split() на Python разделя низ на списък от низове.
  • Използвайте string.split(), за да разделите низа на всички появявания на разделителя по подразбиране, интервал.

Използвайте string.split(sep,maxsplit), за да разделите низа maxsplit брой пъти при появата на разделител sep. Полученият списък има maxsplit+1 елемента.

Като следваща стъпка можете да научите как да проверявате дали низовете на Python са палиндроми или анаграми.