Python – Kontrola, zda řetězec obsahuje jiný řetězec

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í.

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.

  Nakupujete raději online nebo v obchodech? [Poll]