Lekce 7 - Textové řetězce v Pythonu - pokračování
V minulé lekci, Textové řetězce v Pythonu, jsme se podívali na řetězce v Pythonu. V dnešním tutoriálu v nich budeme pokračovat. Naučíme se jejich porovnávání, řezání, formátování a jejich metody.
Řetězce
Porovnávání
Řetězce se dají porovnávat pomocí standardních porovnávacích operátorů:
Operátor | Zápis |
---|---|
Rovnost | == |
Je ostře větší | > |
Je ostře menší | < |
Je větší nebo rovno | >= |
Je menší nebo rovno | <= |
Nerovnost | != |
Obecná negace | ! |
Řetězce se porovnávají podle abecedy. Přesněji řečeno tak, že se
vezmou postupně jednotlivé znaky porovnávaných řetězců a porovnají se
pomocí funkce ord()
. Tudíž "a"
je menší než
"b"
, jelikož číselná hodnota "a"
je
97
a číselná hodnota "b"
je 98
.
(97 < 98
).
Příklady:
{PYTHON}
print("a" < "b")
print("b" < "a")
print("c" == "c")
print("ab" >= "a")
print("e" <= "df")
print("java" == "javascript")
print("python" != "php")
{/PYTHON}
Řezání
Ze řetězců lze "extrahovat" jednotlivé prvky stejně jako ze seznamů. K tomuto účelu se používají hranaté závorky.
Syntaxe je totožná, jako u seznamů (řetězec můžeme tedy chápat jako seznam znaků):
název_seznamu[m]
- vybere jediný znaknázev_seznamu[m:n]
- vybere znaky v rozsahum
ažn-1
název_seznamu[m:n:i]
- vyberem
a každýi
-tý znak don-1
Samozřejmě lze využít i speciality jako [:]
- vybere celý
řetězec, nebo [::-1]
- převrátí řetězec.
Příklady:
{PYTHON}
retezec = "lokomotiva"
print(retezec[0])
print(retezec[1:4])
print(retezec[::2])
{/PYTHON}
Konzolová aplikace
>>> retezec = "lokomotiva"
>>> retezec[0]
l
>>> retezec[1:4]
oko
>>> retezec[::2]
lkmtv
Metody
Řetězce na sobě mají mnoho užitečných metod. Díky nim lze řetězce jednoduše upravovat. Zde uvedu jen některé z nich.
count()
Vrátí počet podřetězců v jiném řetězci, parametrem je hledaný podřetězec. Lze zadat i výřez.
{PYTHON}
retezec = "abeceda"
print(retezec.count("a"))
print(retezec.count("e", 1, 4)) # to samé jako retezec[1:4].count("e")
{/PYTHON}
endswith()
Vrátí booleovskou hodnotu (True
/False
) jestli
řetězec končí zadaným řetězcem, který předáváme jako parametr. Lze
zadat i výřez.
{PYTHON}
retezec = "abeceda"
print(retezec.endswith("a"))
print(retezec.endswith("e"))
{/PYTHON}
find()
Vrátí index nejlevější pozice podřetězce v jiném řetězci. Hledaný
podřetězec předáváme jako parametr. Pokud není nalezen, vrátí
-1
. Lze zadat i výřez.
{PYTHON}
retezec = "abeceda"
print(retezec.find("a"))
print(retezec.find("f"))
{/PYTHON}
index()
Dělá v podstatě to samé jako metoda find()
, avšak pokud
podřetězec nenalezne, vyvolá výjimku.
isalpha()
Vrátí booleovskou hodnotu True
, pokud jsou všechny znaky v
řetězci písmenné znaky a řetězec obsahuje minimálně jeden znak. Jinak
vrací False
.
{PYTHON}
prvni_retezec = "abeceda"
print(prvni_retezec.isalpha())
druhy_retezec = "agent007"
print(druhy_retezec.isalpha())
{/PYTHON}
isdigit()
Vrátí booleovskou hodnotu True
, pokud jsou všechny znaky v
řetězci číselné znaky (0
- 9
) a řetězec
obsahuje minimálně jeden znak. Jinak vrací False
.
{PYTHON}
prvni_retezec = "123"
print(prvni_retezec.isdigit())
druhy_retezec = "agent007"
print(druhy_retezec.isdigit())
{/PYTHON}
islower()
Vrátí booleovskou hodnotu True
, pokud jsou všechny znaky v
řetězci malá písmena a řetězec obsahuje minimálně jeden znak. Jinak
vrací False
.
{PYTHON}
prvni_retezec = "abeceda"
print(prvni_retezec.islower())
druhy_retezec = "aBEceDa"
print(druhy_retezec.islower())
{/PYTHON}
isupper()
Vrátí booleovskou hodnotu True
, pokud jsou všechny znaky v
řetězci velká písmena a řetězec obsahuje minimálně jeden znak. Jinak
vrací False
.
{PYTHON}
prvni_retezec = "ABECEDA"
print(prvni_retezec.isupper())
druhy_retezec = "aBEceDa"
print(druhy_retezec.isupper())
{/PYTHON}
lower()
Převede znaky v řetězci na malá písmena.
{PYTHON}
prvni_retezec = "ABECEDA"
print(prvni_retezec.lower())
druhy_retezec = "PythoN"
print(druhy_retezec.lower())
{/PYTHON}
replace()
Nahradí v řetězci podřetězec jiným podřetězcem a vrátí výsledek jako nový řetězec. Parametry metody jsou hledaný podřetězec a podřetězec, kterým jej chceme nahradit.
{PYTHON}
retezec = "C-sharp je nejlepší!"
print(retezec)
retezec = retezec.replace("C-sharp", "Python")
print(retezec)
{/PYTHON}
startswith()
Vrátí booleovskou hodnotu (True
/False
) jestli
řetězec začíná zadaným podřetězcem, který předáme jako parametr. Lze
zadat i výřez.
{PYTHON}
retezec = "abeceda"
print(retezec.startswith("a"))
print(retezec.startswith("e"))
{/PYTHON}
upper()
Převede znaky v řetězci na velká písmena.
{PYTHON}
prvni_retezec = "abeceda"
print(prvni_retezec.upper())
druhy_retezec = "PythoN"
print(druhy_retezec.upper())
{/PYTHON}
Formátování
Formátování textu nám umožňuje vkládat do něj jednoduše proměnné pomocí zástupných znaků. Docílíme tak přehlednějšího kódu, než kdybychom řetězec nastavovali.
Formátovat text lze pomocí metody format()
, nebo pomocí
%
. Avšak formátování pomocí %
je zastaralé,
takže se ho učit nebudeme. Toto formátování textu je v Pythonu 3 jen pro
snazší přechod od Pythonu 2 na Python 3. V dalších verzích již zřejmě
nebude.
Formátování probíhá tak, že jako argumenty dáme do metody jednotlivé
řetězce, nebo odkazy na řetězce. První argument má index 0
,
další má index 1
, atd.
Příklad:
{PYTHON}
prvni_retezec = "Python"
retezec = "{0} je nejlepší!".format(prvni_retezec)
print(retezec)
{/PYTHON}
Popřípadě lze i psát:
{PYTHON}
prvni_retezec = "Python"
retezec = "{0} je nejlepší!"
retezec = retezec.format(prvni_retezec)
print(retezec)
{/PYTHON}
{0}
nám zastupuje podřetězec, který se na toto místo
vloží z argumentu metody. 0
je index argumentu, tedy první. Tuto
část řetězce lze měnit. Ostatní části měnit nelze.
Více argumentů vložíme následujícím způsobem:
{PYTHON}
prvni_retezec = "Python"
druhy_retezec = "nejlepší"
retezec = "{0} je {1}!"
retezec = retezec.format(prvni_retezec, druhy_retezec)
print(retezec)
{/PYTHON}
Pořadí lze i měnit, jelikož máme jednotlivé řetězce pěkně očíslované:
{PYTHON}
prvni_retezec = "Python"
druhy_retezec = "Nejlepší"
retezec = "{1} je {0}!"
retezec = retezec.format(prvni_retezec, druhy_retezec)
print(retezec)
{/PYTHON}
Ještě větší prohloubení (v AJ): Další metody můžete zjistit
zadáním příkazu help(str)
v pythonovské konzoli. Máte-li
zájem o pokročilejší formátování - Odkaz na
dokumentaci Pythonu
Tak a to je vše k řetězcům. V příští lekci, Řešené úlohy k 6. a 7. lekci Pythonu, se podíváme na vytváření vlastních funkcí a ošetření chyb v programu.
V následujícím cvičení, Řešené úlohy k 6. a 7. lekci Pythonu, si procvičíme nabyté zkušenosti z předchozích lekcí.
Komentáře


Zobrazeno 10 zpráv z 12. Zobrazit vše