Python — SPLIT

Zpět na blog

Python — SPLIT

python split string funkce textové řetězce rozdělení

Jak rozdělit textové řetězce v Pythonu.

Bez řetězců to nejde

Ať už jste analytik nebo programátor, textovým řetězcům (string) se při svojí práci nevyhnete.

Řetězce mohou mít mnoho podob. Může to být nestrukturovaný text, uživatelská jména, popisy produktů, názvy sloupců v tabulkách nebo cokoli jiného.

Python samozřejmě manipulaci s textovými řetězci umožňuje. V porovnání s některými jinými jazyky navíc i docela jednoduchou.

Python split

Metoda split() v jazyce Python slouží k rozdělení textového řetězce na menší části podle určitého oddělovače (separátoru). Oddělovačem může být libovolný znak nebo několik znaků.

Když použijete split(), říkáte Pythonu, aby rozdělil řetězec na jednotlivé části a uložil je do seznamu. Každá část odpovídá jedné části řetězce mezi oddělovači.

Metoda split() může mít různé varianty, kde můžete specifikovat vlastní oddělovač a také omezit počet rozdělení. Tímto způsobem můžete přesněji řídit, jak chcete, aby byl řetězec rozdělen.

Použití metody split() je užitečné při práci s textem, když chcete rozdělit věty na slova nebo oddělit hodnoty v souborech CSV a TSV.

Funkce nebo Metoda? Začátečníci obvykle nerozlišují mezi pythonovským názvoslovím jako je Funkce nebo Metoda. Krátce řečeno: metoda je funkce objektu. Více informací např. v tomto kurzu.

Základní použití

Metoda stringu split() má 2 nepovinné parametry:

  • sep - Oddělovač, podle kterého se provede rozdělení řetězce. Výchozí oddělovač je whitespace (nejběžněji mezera).
  • maxsplit - Maximální počet rozdělení. Výchozí nastavení je -1, které znamená, že se pro rozdělení použijí všechny oddělovače.

Příklad 1

Vyzkoušejte si použití metody split(). Jednotlivé názvy ovoce jsou odděleny mezerou.

text = "Jablko Hruška Banán"
slova = text.split()

print(slova)
['Jablko', 'Hruška', 'Banán']

V tomto příkladu je řetězec rozdělen na seznam slov a jako výchozí oddělovač jsou použité mezery. Python vrátí jednotlivé položky jako datový typ list (seznam).

Příklad 2

Možná vás napadne, co se stane, když těch mezer bude mezi slovy víc?

Co když mezi slova dáte nejdříve 2 a 3 mezery a nakonec ještě přidáte 4 mezery?

Vyzkoušejte si to!

text = "Jablko  Hruška   Banán    "
slova = text.split()

print(slova)
['Jablko', 'Hruška', 'Banán']

Python nedělá rozdíly mezi jedním nebo více oddělovači a slova rozdělí správně.

Vlastní oddělovač

V následujícím příkladu si vyzkoušíte použití vlastního oddělovače.

Příklad 3

text = "Jablko,Hruška,Banán"
ovoce = text.split(',')

print(ovoce)
['Jablko', 'Hruška', 'Banán']

V tomto příkladu je řetězec rozdělen na seznam jednotlivých položek a jako oddělovač je použitá čárka .

Příklad 4

Všimli jste si, že v předchozím příkladu není mezi čárkami žádná mezera? V praxi se ale běžně setkáte s položkami, které jsou odděleny čárkou a mezerou. Co s tím?

Python naštěstí umožňuje funkce řetězit. Proto se nejdřív zbavíme mezer pomocí stringové metody replace() a pak použijeme metodu split().

text = "Jablko, Hruška, Banán"
ovoce = text.replace(' ', '').split(',')

print(ovoce)
['Jablko', 'Hruška', 'Banán']

Kontrolujeme počet rozdělení

V Pythonu nemusíte použít všechny oddělovače pro rozdělení řetězce.

V následujícím příkladu rozdělíte jen první 2 položky a zbytek necháte tak, jak je.

Příklad 5

Metoda split() má k dispozici ještě druhý, nepovinný parametr maxsplit. Ten určuje maximální počet rozdělení.

text = "Jablko,Hruška,Banán,Třešeň,Švestka"
ovoce = text.split(',', 2)

print(ovoce)
['Jablko', 'Hruška', 'Banán,Třešeň,Švestka']

Rozdělení hodnot oddělených tabulátorem

Kopírujete někdy hodnoty z několika buněk v Excelu? Pokud ano, tak při vložení do jiné aplikace budou odděleny tabulátorem.

Jak si s takovými oddělovači poradí Python?

Příklad 6

text = "Jablko	Hruška	Banán"
ovoce = text.split("\t")

print(ovoce)
['Jablko', 'Hruška', 'Banán']

Protože je tabulátor speciální znak, je potřeba použít speciální syntaxi, aby Python pochopil, co po něm chcete. Tabulátor se specifikuje pomocí \t.

Tímto způsobem můžete snadno rozdělit řetězec na jednotlivé hodnoty v textovém souboru nebo v datech oddělených tabulátorem.

Hodnoty na více řádcích (ENTER)

Co když jsou hodnoty na samostatném řádku? Neboli, jsou odděleny Enterem?

Příklad 7

text = """Jablko
Hruška
Banán"""
ovoce = text.split('\n')

print(ovoce)
['Jablko', 'Hruška', 'Banán']

V předchozím příkladu jste použili víceřádkový textový řetězec (multiline string), který se v Pythonu zadává pomocí 3 uvozovek.

Jako oddělovač jste použili nový řádek, který se specifikuje pomocí \n.

Tímto způsobem můžete snadno rozdělit víceřádkový řetězec, neboli hodnoty oddělené Enterem.

Více znaků

Hned v úvodu jsme si řekli, že parametr oddělovač (separátor), může obsahovat více znaků. Jak to funguje? Vyzkoušejte si následující příklad.

Příklad 8

data = "Jablko>>>Hruška>>>Banán"
hodnoty = data.split(">>>")

print(hodnoty)
['Jablko', 'Hruška', 'Banán']

Whitespace

Vzpomínáte si na první příklad, kde jste nezadávali žádný parametr a kde jednotlivé názvy ovoce oddělovaly jen mezery?

Je dobré vědět, že pokud metodě split() nezadáte žádný parametr, tak Python bude používat jako oddělovač všechny tzv. whitespace znaky. Tedy mezery, tabulátory a nové řádky.

Vyzkoušejte si to na posledním příkladu.

Příklad 9

text = """Jablko Hruška	Banán
Třešeň"""
slova = text.split()

print(text)
print(slova)
Jablko Hruška   Banán
Třešeň
['Jablko', 'Hruška', 'Banán', 'Třešeň']

Závěrem

O metodě split() najdete informace také v dokumentaci Pythonu.

Pokud to s Pythonem myslíte vážně a uvažujete o kariéře datového analytika, vyzkoušejte prověřený kurz Data Analytics Pass.


Líbil se vám článek? Sdílejte ho s ostatními

nebo nám napište něco hezkého. Děkujeme!

Zpět na blog

Python pro každý den

Jak si užít Python a nezabloudit v kódu

Zobrazit knihu

SQL pro analytiky 2 - pokročilí

Naučte se vytvářet složité dotazy, databázové objekty a používat pokročilé funkce jazyka SQL.

Zobrazit kurz

Vizualizace pro analytiky

Matplotlib, Pandas a Seaborn. Naučte se vizualizovat a prezentovat data v Pythonu.

Zobrazit kurz

Hledáme další autory

Publikujte na Lovely Blogu a inspirujte ostatní! Sdílením svých znalosti si budujete osobní značku.

Kontaktujte nás

Odběr novinek

Novinky, návody a tipy přímo do vašeho emailu.

Copyright © 2018-2024, Colorbee, s.r.o.

Designed by grafikli.cz in Prague.