2022-08-13 06:57 Doba čtení: 13 min

Jak používat metodu split() v Pythonu

V tomto návodu se podíváme na funkci split() v Pythonu a naučíme se, jak ji použít k rozdělení textového řetězce na seznam menších řetězců.

Při manipulaci s textovými řetězci v Pythonu máte k dispozici řadu zabudovaných metod, které vám umožňují vytvářet upravené kopie řetězců. Můžete je převádět na velká písmena, třídit nebo s nimi provádět další operace. Jednou z užitečných metod je .split(), která rozděluje řetězec do seznamu menších částí. V tomto článku si ukážeme, jak tato funkce funguje, na několika praktických příkladech.

Po dokončení tohoto návodu byste měli být schopni:

  • Porozumět principu fungování metody .split().
  • Přizpůsobit si rozdělení řetězce pomocí parametrů sep a maxsplit.

Pojďme se do toho pustit!

Syntaxe metody split() v Pythonu

Zde je obecný zápis pro použití metody split() na jakýkoli platný textový řetězec v Pythonu:

řetězec.split(sep, maxsplit)

# Parametry:
sep, maxsplit

# Výstup:
Seznam řetězců

Řetězec může být jakýkoli platný textový řetězec v Pythonu.

Parametry sep a maxsplit jsou volitelné.

  • sep specifikuje oddělovač, podle kterého se má řetězec rozdělit. Měl by být zadán jako textový řetězec.
  • maxsplit je celé číslo, které udává, kolik rozdělení se má provést.

Pokud nezadáte tyto volitelné parametry, použijí se jejich výchozí hodnoty.

  • Pokud explicitně nezadáte hodnotu pro sep, jako oddělovač se použije mezera.
  • Pokud nezadáte hodnotu pro maxsplit, bude výchozí hodnota -1, což znamená, že se řetězec rozdělí na všech výskytech oddělovače.

Jednoduše řečeno:

Metoda split() rozdělí řetězec maximálně tolikrát, kolik udává parametr maxsplit, na místech, kde se vyskytuje oddělovač specifikovaný parametrem sep.

Nyní, když jsme si vysvětlili syntaxi metody split(), pojďme se podívat na několik praktických příkladů.

Rozdělení řetězce v Pythonu na seznam menších řetězců

Pokud máte na svém počítači nainstalovaný Python 3, můžete si vyzkoušet následující příklady kódu přímo v Python REPL.

REPL spustíte zadáním jednoho z následujících příkazů do terminálu:

$ python
$ python -i

▶️ Tyto příklady si můžete také vyzkoušet v editoru Python na etechblog.cz.

V tomto příkladu je py_str textový řetězec. Zavoláme metodu .split() na py_str bez jakýchkoli parametrů a podíváme se na výstup.

py_str = "Učte se, jak používat split() v Pythonu"
py_str.split()

# Výstup
['Učte', 'se,', 'jak', 'používat', 'split()', 'v', 'Pythonu']

Jak je vidět, řetězec se rozdělil na všech místech, kde se vyskytovaly mezery.

Rozdělení řetězce podle zadaného oddělovače

#1. Nejprve rozdělme řetězec py_str pomocí dvojitého podtržítka (__) jako oddělovače.

py_str = "Vše__nej__lepší"
py_str.split(sep='__')

# Výstup
['Vše', 'nej', 'lepší']

#2. Podívejme se na další příklad. Řetězec py_str obsahuje tři věty oddělené tečkou (.).

py_str = "Miluji programování. Python je skvělý. Učím se Python v roce 2022"
py_str.split(sep='.')

# Výstup
['Miluji programování', ' Python je skvělý', " Učím se Python v roce 2022"]

▶️ Když na tomto řetězci zavoláme metodu .split() s tečkou . jako oddělovačem, získáme seznam tří vět, jak je vidět ve výše uvedeném výstupu.

#3. Položme si pár otázek:

  • Co se stane, pokud se oddělovač v řetězci nevyskytuje?
  • Jak se v takovém případě provede rozdělení?

Zde je příklad:

Pokusíme se rozdělit py_str na místě, kde se nachází hvězdička (*).

py_str = "Tento řádek neobsahuje hvězdičku."
py_str.split(sep='*')

# Výstup
['Tento řádek neobsahuje hvězdičku.']

— což se nestane.

Protože v tomto případě nemůže dojít k rozdělení, výsledný seznam obsahuje celý původní řetězec.

V následující části si ukážeme, jak můžeme použít metodu split() na obsah textového souboru.

Rozdělení obsahu souboru v Pythonu

Při práci s textovými soubory v Pythonu můžete potřebovat rozdělit obsah souboru na menší části – na základě určitého oddělovače – pro snadnější zpracování.

Zde je ukázkový textový soubor:

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

Následující úryvek kódu ukazuje, jak rozdělit obsah vzorového textového souboru.

  • Výše uvedený kód dělá následující:
  • Používá kontextový manažer with pro otevření a práci s textovým souborem sample.txt.
  • Načte obsah souboru pomocí metody .read() na objekt souboru f.
  • Rozdělí obsah na základě výskytu oddělovače (...) do seznamu str_list.

Prochází seznamem str_list, aby získal přístup ke každému řetězci a vytiskne ho.

# Výstup
Toto je ukázkový textový soubor
Obsahuje informace o
Začínáme s <a href="https://etechblog.cz.com/pcap-certification/">programováním v Pythonu</a>
Podle průzkumu StackOverflow Developer Survey 2022
Python je jedním z nejoblíbenějších programovacích jazyků
Tak na co čekáte? Začněte se učit!

Zde je výstup.

Jako cvičení si můžete zkusit rozdělit obsah textového souboru podle libovolného oddělovače.

Rozdělení řetězce na kousky

Když rozdělíte řetězec jednou, získáte dvě části; když ho rozdělíte dvakrát, získáte tři části.

📋 Obecně platí, že když rozdělíte řetězec K-krát, získáte K + 1 částí.

To je znázorněno níže.

Jak funguje parametr maxsplit (obrázek od autora)

py_str = "Část#1 Jsem větší část, Část#2"
py_str.split(maxsplit=1)

# Výstup
['Část#1', "Jsem větší část, Část#2"]

#1. Nastavili jsme maxsplit na 1. Nezadali jsme oddělovač, takže se rozdělení provede standardně na místech s mezerou.

I když druhý blok v seznamu obsahuje mezery, nedojde k rozdělení, protože počet rozdělení je omezen hodnotou maxsplit na jedna.

py_str = "Část#1 Část#2 Jsem jedna velká Část#3, i když obsahuji mezery"
py_str.split(maxsplit=2)

# Výstup
['Část#1',
 'Část#2',
 "Jsem jedna velká Část#3, i když obsahuji mezery"]

#2. Zvyšte hodnotu maxsplit na 2 a podívejte se, jak rozdělení proběhne v následujícím příkladu.

Stejně jako v předchozím příkladu, o počtu provedených rozdělení rozhoduje hodnota maxsplit. Získáme tři části, rozdělené na prvním a druhém výskytu mezery.

#3. Co se stane, když nastavíte maxsplit na hodnotu větší, než je počet výskytů oddělovače?

py_str = "Zde, je, pouze, 4, čárky"
py_str.split(maxsplit=8)

# Výstup
['Zde,', 'je,', 'pouze,', '4,', 'čárky']

V následujícím kódu nastavíme maxsplit na 8, i když řetězec obsahuje pouze čtyři čárky.

Zde metoda split rozdělí py_str na všech čtyřech místech, kde se vyskytuje čárka. I když se pokusíte nastavit maxsplit na hodnotu menší než -1, řekněme -7, rozdělení se provede u všech výskytů oddělovače.

Dále dáme dohromady vše, co jsme se naučili, a použijeme oba parametry sep a maxsplit.

Rozdělení řetězce podle oddělovače s omezením počtu rozdělení

py_str = "Část#1, Část#2, Jsem jedna velká Část#3, i když obsahuji ,"
py_str.split(sep = ',',maxsplit=2)

# Výstup
['Část#1', ' Část#2', " Jsem jedna velká Část#3, i když obsahuji ,"]

#1. Předpokládejme, že potřebujeme rozdělit řetězec py_str na tři části podle výskytu čárky (,). K tomu můžeme ve volání metody nastavit hodnotu sep na ',' a hodnotu maxsplit na 2.

Jak je vidět na výstupu, rozdělení proběhne dvakrát na prvních dvou výskytech oddělovače.

#2. Oddělovač sep nemusí být vždy speciální znak. Může to být sekvence speciálních znaků, jako například dvojité podtržítko, které jsme používali dříve, nebo to může být dokonce podřetězec.

py_str = "Musíte se naučit datové struktury, naučit se algoritmy a naučit se víc!"
py_str.split(sep = 'naučit',maxsplit=2)

# Výstup
['Musíte se ', ' datové struktury, ', ' algoritmy, a naučit se víc!']

Nastavíme řetězec 'naučit' jako argument sep a podíváme se, jak proběhne rozdělení pro různé hodnoty maxsplit. Zde nastavíme maxsplit na 2.

py_str = "Musíte se naučit datové struktury, naučit se algoritmy, a naučit se víc!"
py_str.split(sep = 'naučit',maxsplit=-1)

# Výstup
['Musíte se ', ' datové struktury, ', ' algoritmy, a ', ' se víc!']

#3. Pokud byste chtěli rozdělit py_str na všech místech, kde se nachází řetězec 'naučit', můžete zavolat metodu .split() s nastavením sep = 'naučit' — bez parametru maxsplit. To je ekvivalentní explicitnímu nastavení hodnoty maxsplit na -1, jak je znázorněno v níže uvedeném kódu.

Vidíme, že rozdělení proběhne na všech místech, kde se vyskytuje slovo „naučit“.

Závěrem

Doufám, že nyní rozumíte, jak používat metodu .split() s řetězci v Pythonu.

  • Zde je shrnutí tohoto návodu:
  • Zabudovaná metoda .split() v Pythonu rozděluje řetězec na seznam menších řetězců.
  • Použijte řetězec.split() pro rozdělení řetězce na všech místech s výchozím oddělovačem, tedy mezerou.

Použijte řetězec.split(sep,maxsplit) pro rozdělení řetězce maximálně maxsplit-krát na místech, kde se vyskytuje oddělovač sep. Výsledný seznam bude obsahovat maxsplit + 1 položek.

Jako další krok se můžete naučit, jak ověřovat, zda jsou řetězce v Pythonu palindromy nebo anagramy.

Petra Kovářová
Autor
Czechia

Sleduje mobilní technologie, Android/iOS a praktické návody pro uživatele.

Předchozí článek
Vidíte, kdo vás nahlásil na TikTok?
Další článek
Jaké jsou pořadí udatných?