Python – Kontrola, zda řetězec obsahuje jiný řetězec
Ve světě programování je často nezbytné zjistit, zda jeden řetězec obsahuje jiný řetězec. Ať už potřebujete ověřit vstup uživatele nebo manipulovat s textovými daty, Python nabízí několik metod, jak tuto úlohu efektivně zvládnout.
V tomto podrobném průvodci probereme různé metody kontroly, zda řetězec obsahuje jiný řetězec v Pythonu, a poskytneme příklady, které vám pomohou pochopit jejich použití.
Table of Contents
Metoda in
Nejjednodušší způsob, jak zjistit, zda jeden řetězec obsahuje jiný řetězec, je použít operátor in
. Tento operátor vrátí hodnotu True
, pokud je hledaný řetězec nalezen v cílovém řetězci, a False
, pokud nenalezen.
python
Zjistěte, zda 'Python' obsahuje 'Py'
>>> 'Py' in 'Python'
True
Operátor in
je efektivní pro rychlé kontroly, ale jeho složitost je O(n), kde n je délka cílového řetězce. To znamená, že s rostoucí délkou cílového řetězce se bude zvyšovat i doba provedení.
Metoda find()
Metoda find()
vyhledává v cílovém řetězci hledaný řetězec a vrací index prvního nalezeného výskytu. Pokud hledaný řetězec není nalezen, vrátí -1
. Tato metoda je rychlejší než operátor in
a její složitost je O(n).
python
Najděte index výskytu 'Py' v 'Python'
>>> 'Python'.find('Py')
0
Metodu find()
lze použít také s volitelnými argumenty pro zadání počáteční a koncové pozice vyhledávání.
Metoda index()
Metoda index()
je podobná metodě find()
, ale namísto návratového indexu vyvolá chybu ValueError
, pokud hledaný řetězec není nalezen. Tato metoda je vhodná pro případy, kdy jste si jisti, že hledaný řetězec existuje v cílovém řetězci.
python
Najděte index výskytu 'Py' v 'Python'
>>> 'Python'.index('Py')
0
Metoda index()
má stejnou složitost jako metoda find()
, která je O(n).
Metoda rfind()
Metoda rfind()
funguje stejně jako metoda find()
, ale hledá od konce cílového řetězce. Vrací index posledního nalezeného výskytu hledaného řetězce. Pokud hledaný řetězec není nalezen, vrátí -1
.
python
Najděte index posledního výskytu 'Py' v 'Python'
>>> 'Python'.rfind('Py')
0
Metoda rfind()
je užitečná pro vyhledávání posledního výskytu hledaného řetězce v cílovém řetězci.
Metoda rindex()
Metoda rindex()
je podobná metodě rfind()
, ale namísto návratového indexu vyvolá chybu ValueError
, pokud hledaný řetězec není nalezen. Tato metoda je vhodná pro případy, kdy jste si jisti, že hledaný řetězec existuje v cílovém řetězci.
python
Najděte index posledního výskytu 'Py' v 'Python'
>>> 'Python'.rindex('Py')
0
Metoda rindex()
má stejnou složitost jako metoda rfind()
, která je O(n).
Závěr
Python poskytuje různé metody pro kontrolu, zda jeden řetězec obsahuje jiný řetězec. Operátor in
je nejjednodušší, ale jeho složitost je O(n). Metody find()
, index()
, rfind()
a rindex()
jsou rychlejší, protože jejich složitost je O(n). Volba nejlepší metody závisí na konkrétních požadavcích vaší aplikace.
Porozumění těmto metodám vám pomůže efektivněji pracovat s textovými daty v Pythonu a usnadní vám řešení široké škály programovacích úloh.
Často kladené otázky
1. Jak zjistím, zda jeden řetězec obsahuje jiný řetězec v Pythonu?
– Můžete použít operátor in
, metodu find()
, index()
, rfind()
nebo rindex()
.
2. Jaký je rozdíl mezi operátorem in
a metodami find()
, index()
, rfind()
a rindex()
?
– Operátor in
vrací hodnotu True
nebo False
, zatímco metody find()
, index()
, rfind()
a rindex()
vracejí index výskytu hledaného řetězce. Metody index()
a rindex()
vyvolávají chybu, pokud hledaný řetězec není nalezen.
3. Je operátor in
efektivnější než metody find()
, index()
, rfind()
a rindex()
?
– Ne, metody find()
, index()
, rfind()
a rindex()
jsou efektivnější s O(n) složitostí, zatímco operátor in
má O(n) složitost.
4. Kdy bych měl použít operátor in
?
– Operátor in
byste měli použít, když potřebujete pouze zjistit, zda jeden řetězec obsahuje jiný řetězec, a rychlost provedení není kritická.
5. Kdy bych měl použít metody find()
, index()
, rfind()
a rindex()
?
– Tyto metody byste měli použít, když potřebujete získat index výskytu hledaného řetězce, nebo když chcete vyvolat chybu, pokud hledaný řetězec neexistuje.
6. Jak mohu hledat v cílovém řetězci od určité pozice?
– Metody find()
, index()
, rfind()
a rindex()
přijímají volitelné argumenty start
a end
pro zadání počáteční a koncové pozice vyhledávání.
7. Jak mohu ignorovat velká a malá písmena při vyhledávání?
– Můžete použít metodu lower()
nebo upper()
k převedení cílového a hledaného řetězce na malá nebo velká písmena před provedením vyhledávání.
8. Jak mohu najít všechny výskyty hledaného řetězce v cílovém řetězci?
– Můžete použít metodu finditer()
ze re
modulu k vrácení iterátoru všech výskytů hledaného řetězce v cílovém řetězci.