Zápis řetězců
Řetězce zapisujeme do uvozovek nebo apostrofů. V Pythonu 3 mohou řetězce obsahovat i znaky s diakritikou.
Indexování
K jednotlivým znakům řetězce přistupujeme pomocí indexování hranatými závorkami. Pozor, indexujeme od nuly. Python (na rozdíl od většiny jiných programovacích jazyků) umožňuje indexovat i od konce pomocí záporných čísel.
text = "prase"
text[0] # první písmeno => 'p'
text[1] # druhé písmeno => 'r'
text[4] # páté, poslední písmeno => 'e'
text[-1] # poslední písmeno => 'e'
text[-2] # předposlední písmeno => 's'
Pomocí dvojtečky můžeme indexovat podřetězec.
text = "panoramata"
print(text[2:6]) # od 2. po 6. pozici => nora
print(text[:3]) # první 3 znaky => pan
print(text[-4:]) # poslední 4 znaky => mata
Pokročilejším prvkem pak je využití dvou dvojteček, kde třetí hodnota udává délku skoku:
text = "Běží-liška-k-táboru"
print(text[5:15:2]) # od 5. po 14. pozici, ob 2 => lšakt
print(text[::3]) # od začátku do konce, ob 3 => Bíia-bu
print(text[::-1]) # pozpátku => urobát-k-akšil-ížěB
Iterování přes řetězec
Jednotlivé znaky řetězce můžeme snadno procházet pomocí for cyklu.
Neměnitelnost řetězců
Řetězce jsou v Pythonu neměnitelný datový typ. To je jeden z výrazných rysů, ve kterých se liší od seznamů. Neměnitelnost znamená, že nemůžeme změnit dílčí písmeno v znaku. Musíme vytvořit nový řetězec, ve kterém bude příslušné písmeno změněno.
text = "kopec"
text[2] = "n" # TypeError - řetězec neumožňuje změnu znaku
text = text[:2]+"n"+text[3:] # vytvoříme nový, upravený řetězec
print(text)
Operace s řetězci
Řetězce můžeme sčítat (= zřetězit). Řetězce můžeme také násobit celým číslem (= opakovaně zřetězit). Mezi další užitečné operace patří zjištění délky (len
) či test na přítomnost podřetězce (in
).
text = "petr"
text + "klíč" # => petrklíč
3*text # => petrpetrpetr
len(text) # => 4
"e" in text # => True
Řetězce jsou objekty, které mají k dispozici řadu užitečných metod, které voláme pomocí tečkové notace. Příklady jsou převod na velká/malá písmena (upper, lower
), rozdělení řetězce podle zadaného znaku (split
), nebo nahrazování podřetězce (replace
):
text = "Liberec"
text.upper() # => LIBEREC
text.lower() # => liberec
text.split("e") # => ['Lib', 'r', 'c']
text.replace("ber", "dej") # => Lidejec
Všimněte si, že zde využíváme takzvanou tečkovou notaci: píšeme text.upper()
, nikoliv běžné volání funkce tvaru upper(text)
. To souvisí s tím, že řetězce jsou reprezentovány jako objekty.
Operace se znaky
Při práci s řetězci se občas hodí i operace pro manipulaci s jednotlivými znaky, především funkce ord
a chr
, které převádí znaky na celá čísla a zpět:
ord(c)
vrátí pořadové číslo znakuc
,chr(i)
vrátí znak s pořadovým číslemi
.
Pod „pořadové číslo“ se rozumí číslo v kódování Unicode. Pro základní programátorské úlohy stačí vědět, že písmena jsou v tomto kódování abecedně za sebou (bohužel to však platí jen pro písmena anglické abecedy). Takto tedy můžeme vypsat písmena anglické abecedy:
Rozhodovačka
Rychlé procvičování výběrem ze dvou možností.
Řetězce v Pythonu (lehké)
zadání: 49
Typicky zabere: 6 min

Řetězce v Pythonu (střední)
zadání: 53
Typicky zabere: 7 min

Řetězce v Pythonu (těžké)
zadání: 54
Typicky zabere: 12 min

Porozumění
Čtení textů, odpovídání na otázky testující porozumění textu.
Řetězce v Pythonu
Řešené příklady na práci s řetězci v Pythonu.
Psaná odpověď
Cvičení, ve kterém píšete odpověď na klávesnici.
Řetězce v Pythonu (lehké)
zadání: 21
Typicky zabere: 4 min

Programování v Pythonu
Programování přímo v prohlížeči, s automatickým vyhodnocením správnosti programu.
Řetězce: základy
Příklady s řetězci: základní indexování a jednoduché operace, použití návodných kódů.
Řetězce: těžší
Sada mírně náročnějších příkladů s řetězci. Všechny jsou stále řešitelné na pár řádků kódu, pokud využijete správný přístup.