Python Metoda String find() s příklady

⚡ Chytré shrnutí

Python Metoda find() typu string vrací index prvního výskytu podřetězce v řetězci. Pokud podřetězec neexistuje, vrací -1, čímž se zabrání výjimkám.

  • 🔍 Syntaxe: Funkce find() přijímá podřetězec a volitelné počáteční a koncové indexy pro omezení rozsahu vyhledávání.
  • 🎯 První zápas: Funkce find() vrací nejnižší index prvního výskytu, prohledává se zleva doprava.
  • Nenalezeno: Funkce find() vrací -1, místo aby vyvolala chybu, pokud podřetězec chybí.
  • 🔁 rfind(): Metoda rfind() vrací nejvyšší index a místo toho hledá zprava.
  • ⚠️ index(): Metoda index() se chová jako find(), ale vyvolá chybu ValueError, pokud podřetězec chybí.
  • 🤖 Asistence AI: Asistenti kódování s umělou inteligencí generují logiku find() a power search substring v textových kanálech NLP.

Python String find()

Co je to Python String find()?

Python String find() je funkce dostupná v Python knihovna pro nalezení indexu prvního výskytu podřetězce v daném řetězci. Funkce find() vrací -1 namísto vyvolání výjimky, pokud zadaný podřetězec v daném řetězci není přítomen. Je to jeden z Pythonnejpoužívanější řetězcové metody pro vyhledání textu.

Syntaxe Python string find()

Základní syntaxe Python Funkce find() je následující:

string.find(substring,start,end)

Parametry pro metodu find().

Zde jsou tři parametry funkce find() v Python:

  • podřetězecPodřetězec, který chcete v daném řetězci vyhledat.
  • Začít: (volitelné) Počáteční hodnota, od které se začne hledat podřetězec. Ve výchozím nastavení je to 0.
  • konec: (volitelné) Koncová hodnota, kde bude vyhledávání podřetězce ukončeno. Ve výchozím nastavení je hodnota délka řetězce.

Příklad metody find() s výchozími hodnotami

Parametry předané do Python Metoda find() je podřetězec, tedy řetězec, který chcete vyhledat, plus začátek a konec. Počáteční hodnota je ve výchozím nastavení 0 a koncová hodnota je délka řetězce.

V tomto příkladu použijeme metodu find() v Python s výchozími hodnotami.

Metoda find() vyhledá podřetězec a vrátí pozici jeho prvního výskytu. Pokud se podřetězec v daném řetězci vyskytuje vícekrát, stále vrátí index nebo pozici prvního z nich.

Příklad:

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials"))

Výstup:

The position of Tutorials is at: 12

Příklad find() pomocí argumentu start

V daném řetězci můžete vyhledat podřetězec a zadat počáteční pozici, odkud bude vyhledávání zahájeno. Pro tento účel lze použít parametr start.

Níže uvedený příklad specifikuje počáteční pozici jako 20 a metodu find() v Python začne vyhledávání od pozice 20. Zde bude koncová pozice délka řetězce, takže se hledá až do konce řetězce od pozice 20 a dále.

Příklad:

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials", 20))

Výstup:

The position of Tutorials is at 48

Příklad find() s použitím argumentů start a end

Pomocí parametrů start a end můžeme omezit vyhledávání namísto prohledávání celého řetězce.

Příklad:

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials is at:", mystring.find("Tutorials", 5, 30))

Výstup:

The position of Tutorials is at 12

Příklad metody find() pro nalezení pozice daného podřetězce v řetězci

Víme, že find() nám pomáhá najít index prvního výskytu podřetězce. Pokud podřetězec v daném řetězci chybí, vrátí -1. Následující příklad ukazuje index, když je řetězec přítomen, a -1, když hledaný podřetězec není nalezen.

Příklad:

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Best site is at:", mystring.find("Best site", 5, 40))
print("The position of Guru99 is at:", mystring.find("Guru99", 20))

Výstup:

The position of Best site is at: 27
The position of Guru99 is at: -1

Python řetězec rfind()

Jedno Python Funkce rfind() je podobná funkci find(), s jediným rozdílem, že rfind() vrací nejvyšší index pro daný podřetězec, zatímco find() vrací nejnižší, tedy úplně první index. Jak rfind(), tak find() vrací -1, pokud podřetězec není přítomen.

V níže uvedeném příkladu máme řetězec „Meet Guru99 stránek s tutoriály. Nejlepší stránka pro Python Návody!“ a pokusí se najít pozici podřetězce Tutorials pomocí funkcí find() a rfind(). Podřetězec Tutorials se v řetězci vyskytuje dvakrát.

Zde je příklad, kde jsou použity funkce find() i rfind().

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("Tutorials"))
print("The position of Tutorials using rfind() : ", mystring.rfind("Tutorials"))

Výstup:

The position of Tutorials using find() :  12
The position of Tutorials using rfind() :  48

Výstup ukazuje, že find() vrací index úplně prvního nalezeného podřetězce Tutorials, zatímco rfind() vrací poslední index podřetězce Tutorials.

Python řetězcový index()

Jedno Python Funkce index() v řetězci vrací pozici zadaného podřetězce, stejně jako find(). Jediný rozdíl mezi nimi je v tom, že index() vyvolá výjimku, pokud podřetězec v řetězci není přítomen, zatímco find() vrací -1.

Zde je pracovní příklad, který ukazuje chování index() a find().

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("Tutorials"))
print("The position of Tutorials using index() : ", mystring.index("Tutorials"))

Výstup:

The position of Tutorials using find() :  12
The position of Tutorials using index() :  12

Stejnou pozici získáme pro find() i index(). Podívejme se na příklad, kdy daný podřetězec v řetězci není přítomen.

mystring = "Meet Guru99 Tutorials Site.Best site for Python Tutorials!"
print("The position of Tutorials using find() : ", mystring.find("test"))
print("The position of Tutorials using index() : ", mystring.index("test"))

Výstup:

The position of Tutorials using find() :  -1
Traceback (most recent call last):
  File "task1.py", line 3, in <module>
    print("The position of Tutorials using index() : ", mystring.index("test"))
ValueError: substring not found

Ve výše uvedeném příkladu se snažíme najít pozici podřetězce „test“. Podřetězec v daném řetězci chybí, takže pomocí find() získáme pozici -1, ale pro index() to vyvolá chybu, jak je ukázáno výše.

Chcete-li zjistit celkový výskyt podřetězce

Abychom zjistili celkový počet výskytů podřetězce v daném řetězci, použijeme funkci find() v PythonŘetězec budeme procházet smyčkou for od 0 do konce řetězce s využitím parametru startIndex pro find().

Proměnné startIndex a count budou inicializovány na 0. Uvnitř smyčky for zkontrolujeme, zda je podřetězec přítomen v daném řetězci pomocí funkce find() s proměnnou startIndex nastavenou na 0.

Hodnota vrácená z find(), pokud není -1, aktualizuje startIndex na index, kde je řetězec nalezen, a také zvýší hodnotu count.

Zde je pracovní příklad:

my_string = "test string test, test string testing, test string test string"
startIndex = 0
count = 0
for i in range(len(my_string)):
    k = my_string.find('test', startIndex)
    if(k != -1):
        startIndex = k+1
        count += 1
        k = 0
print("The total count of substring test is: ", count )

Výstup:

The total count of substring test is:  6

" Dozvědět se víc o Python Řetězec split()

Nejčastější dotazy

Ano. find() přesně odpovídá podřetězci, takže „Hello“.find(“h”) vrací -1, zatímco „Hello“.find(“H”) vrací 0. Pokud potřebujete vyhledávání bez rozlišování velkých a malých písmen, nejprve převeďte řetězec pomocí lower() nebo upper().

Operátor in vrací pouze True nebo False, aby ukázal, zda podřetězec existuje. Funkce find() jde ještě dále a vrací přesný index první shody nebo -1, pokud podřetězec chybí.

Ano. Funkce find() akceptuje záporné počáteční a koncové indexy, které se počítají od konce řetězce. Například „GuruFunkce 99“.find(„9“, -2) vyhledává pouze poslední dva znaky a vrací jejich pozici.

Metoda str.find() vyhledává jednu shodu po druhé. Pro všechny shody v jednom volání použijte modul re: re.findall() vrací všechny odpovídající podřetězce a re.finditer() vrací objekty shody s každou počáteční pozicí.

Metoda find() je pouze pro řetězce, takže její volání v seznamu vyvolá chybu AttributeError. Chcete-li najít položku v seznamu nebo n-tici, použijte místo toho metodu index(), která vrací pozici první shody.

Ano. Pro jednoduché vyhledávání podřetězců je v jazyce C implementována funkce find(), která běží rychleji než kompilace regulárního výrazu. Modul re použijte pouze tehdy, když potřebujete vzory, zástupné znaky nebo více shod.

V strojovém učení a NLP funkce find() vyhledává klíčová slova, tagy nebo oddělovače a zároveň čistí a tokenizuje text. Detekce přítomnosti podřetězce nebo jeho umístění pomáhá při vytváření funkcí a analýze vstupů modelu.

Ano. GitHub Copilot automaticky dokončuje volání find(), rfind() a index() z krátkého komentáře popisujícího váš cíl. Nástroje Agentic AI jdou ještě dál, píší logiku vyhledávání, přidávají počáteční a koncové argumenty a spouštějí vaše testy.

Shrňte tento příspěvek takto: