7 způsobů, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec

Práce s řetězci je v Pythonu běžným úkolem. Často potřebujete zjistit, zda řetězec obsahuje jiný řetězec.

Mezi nejjednodušší metody, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec, patří operátor 'in', funkce find() a metoda index(). Složitější scénáře lze řešit regulárními výrazy nebo externí knihovnou, jako je Pandas.

Tento článek vám ukazuje:

  • čtyři jednoduché metody

  • dvě složitější funkce regulárních výrazů

  • metoda využívající knihovnu Pandas

Každou techniku ​​se naučíte na příkladech jejich syntaxe a použití. Získáte také tipy, která metoda je nejlepší pro různé požadavky.

Začněme!

Obsah

Základy Pythonových řetězců

Řetězec v Pythonu je posloupnost znaků, která se používá k reprezentaci textových dat. Mohou obsahovat písmena, číslice, symboly a mezery.

Je to jeden z vestavěných datových typů Pythonu a lze jej vytvořit pomocí:

  • jednoduché uvozovky (' ')

  • dvojité uvozovky ("")

  • trojité uvozovky (“' ”' nebo “”” “””)

Řetězce jsou indexovány, což znamená, že ke konkrétním znakům můžete přistupovat odkazem na jejich indexové číslo. Počáteční index je 0, což znamená, že první znak řetězce má index 0, druhý má index 1 a tak dále.

Dále se podíváme na způsoby, jak zkontrolovat podřetězce.

4 nejjednodušší způsoby kontroly podřetězců

Python poskytuje mnoho způsobů, jak zkontrolovat, zda určitý podřetězec existuje ve větším řetězci. Některé jsou složitější než jiné. Pro nejzákladnější kontroly jsou nejjednoduššími metodami operátor in nebo jedna ze tří řetězcových metod.

  1. v operátorovi

  2. metoda find().

  3. metoda index().

  4. metoda count().

7 způsobů, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec

1. V Operátor

Operátor 'in' v Pythonu je jednoduchý a intuitivní způsob, jak zkontrolovat, zda existuje jeden řetězec v jiném řetězci. Tento operátor zkontroluje členství a vrátí booleovskou hodnotu:

  • True, pokud je podřetězec nalezen v hlavním řetězci

  • Falešné, pokud není

Zde je nějaký ukázkový kód:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

Operátor 'in' rozlišuje velká a malá písmena. To znamená, že zachází s malými a velkými písmeny jako s různými. Výše uvedený kód nenajde podřetězec „ahoj“, takže operátor vrátí false.

Pokud chcete provést kontrolu bez ohledu na velikost písmen, můžete před provedením kontroly převést hlavní řetězec i podřetězec na stejná velká a malá písmena:

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

Nevýhodou operátoru in je, že neposkytuje pozici podřetězce v rámci hlavního řetězce. K tomu byste potřebovali jinou metodu v této části. Číst dál…

2. Metoda Find().

Metoda find() vrátí první index, na kterém se podřetězec objeví, nebo -1 , pokud podřetězec nebyl nalezen.

Voláte metodu find() na řetězci s a předáte podřetězec sub jako argument. Zde je příklad:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

Volitelně můžete zadat počáteční nebo koncový index pro omezení vyhledávání. Nevýhodou této metody je, že se zastaví při prvním výskytu.

3. Metoda Index().

Metoda index() je docela podobná metodě find() s tím rozdílem, že vyvolá chybu ValueError , když podřetězec není nalezen. To znamená, že byste měli hovor zabalit do sekce Try/Except.

Chcete-li použít metodu index() , zavolejte ji na řetězec s a předejte podřetězec sub jako argument.

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

Tato metoda se také zastaví na prvním podřetězci uvnitř textu.

4. Metoda Count().

Metoda .count() počítá, kolikrát se podřetězec vyskytuje v původním řetězci. Vrátí celé číslo představující tento počet. Pokud podřetězec není nalezen v hlavním řetězci, vrátí 0.

Zde je jednoduchý příklad, který hledá písmeno „o“ v textu „Ahoj, světe!“:

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

2 způsoby, jak porovnat řetězce s regulárními výrazy

Použití (regex) je trochu složitější než metody v předchozí části. Poskytují vám však více možností pro vyhledávání a analýzu textu, kterým se zabýváte.

Dva z nejjednodušších způsobů v rámci modulu re jsou:

  1. Vyhledávání()

  2. findall()

7 způsobů, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec

1. re.Search()

Funkce search () v modulu re hledá vzor v daném řetězci a v případě nalezení shody vrátí objekt shody. V opačném případě vrátí None .

Ve výchozím nastavení funkce rozlišuje malá a velká písmena. Chcete-li se vyhnout rozlišování malých a velkých písmen , můžete použít příznak re.IgnoreCase .

Zde je jednoduchý příklad, který používá podmíněné příkazy na základě toho, zda byl řetězec nalezen:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

Všimněte si, že tato metoda najde první shodu a poté zastaví hledání. Pokud chcete najít všechny shody, pak je další na tomto seznamu pro vás.

2. znovu Findall()

Tato metoda najde všechny výskyty vyhledávacího vzoru v daném řetězci a vrátí seznam obsahující všechny shody.

Tento příklad používá vzor, ​​který odpovídá jedné nebo více číslicím v řetězci. Textový řetězec „123, 456, 789“ obsahuje tři sekvence číslic.

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

Toto je odpověď z ukázkového kódu: ['123', '456', '789'].

Jak najít podřetězce s pandami

7 způsobů, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec

Pandas je populární open-source knihovna pro analýzu dat a manipulaci s nimi pro Python. Poskytuje datové struktury a funkce potřebné pro manipulaci a analýzu strukturovaných dat.

Jednou z primárních datových struktur poskytovaných Pandas je DataFrame. Tuto všestrannou datovou strukturu můžete použít ke kontrole jednoho řetězce uvnitř druhého.

Výhodou Pandas je, že poskytuje balíčky kódu, které byste museli ve velkém psát v jiných programovacích jazycích. Konkrétně je uvnitř funkce obsahuje spoustu energie.

Funkce str.contains() v Pandas

Metoda str.contains() testuje, zda je zadaný vzor nebo regulární výraz obsažen v řetězci sloupce DataFrame.

Zde je příklad, který importuje knihovnu a hledá řetězec v seznamu řetězců:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

V tomto příkladu hledáme podřetězec 'an' ve sloupci 'ovoce' a podle toho filtrujeme DataFrame. Výstup by byl:

  • 1 banán

  • 4 oranžové

Pokud hledáte další příklady toho, co Pandy umí, podívejte se na toto video:

Tipy pro výběr konkrétní metody v Pythonu

Výběr metody závisí do značné míry na konkrétních požadavcích vašeho úkolu.

Zde jsou čtyři důvody, proč si vybrat jednu z metod, které jste se naučili z tohoto článku, plus jedna bonusová metoda, kterou se dozvíte jinde na tomto blogu:

  1. Rychlost zpracování

  2. Musíte znát umístění podřetězce

  3. Musíte znát počet výskytů podřetězce

  4. Chcete sladit složité vzory

  5. Provádění analýzy textu

1. Rychlost zpracování

7 způsobů, jak zkontrolovat, zda řetězec Pythonu obsahuje podřetězec

Operátor 'in' 0 je nejlepší volbou, pokud chcete jednoduše vědět, zda v řetězci existuje podřetězec.

Pro tento účel je to jednoduché, intuitivní a rychlé. Neposkytuje však informace o umístění nebo počtu podřetězců.

2. Umístění podřetězce

Pokud potřebujete znát pozici prvního výskytu podřetězce v řetězci, použijte metody .find() nebo .index() .

Oba vrátí index prvního výskytu podřetězce.

3. Počet podřetězců

Metodu .count() použijte , když chcete vědět, kolikrát se podřetězec vyskytuje v řetězci.

4. Komplexní vzory

Pokud potřebujete porovnat složité vzory nebo provádět vyhledávání bez rozlišení velkých a malých písmen, jsou regulární výrazy nejflexibilnější. Funkce re.search () dokáže zpracovat vzory nad rámec jednoduchých podřetězců a může snadno provádět vyhledávání bez ohledu na velikost písmen.

Regulární výrazy však mohou být přehnané pro jednoduché kontroly podřetězců a mohou být také pomalejší a složitější na používání a údržbu.

5. Provádění analýzy textu

Podívejte se na náš článek na , který ukazuje, jak pracovat s knihovnou textblob.

Můžete použít funkci .tags ke kontrole slovních druhů nebo funkci .ngram k nalezení slov, která se v dokumentu často vyskytují společně.

Závěrečné myšlenky

Naučili jste se sedm metod, jak zkontrolovat, zda slovo nebo řetězec obsahuje jiný objekt. Ty zahrnovaly operátory členství, vestavěné funkce, regulární výrazy a funkce Pandas.

Každá metoda je správná pro určité situace, ale ne pro všechny. Použijte tento článek, abyste zvládli programovací jazyk Python a použili nejlepší řešení pro vaši úlohu analýzy řetězců.

Pamatujte, že neexistuje žádná univerzální metoda. Každý přístup má své vlastní výhody a zvláštnosti, takže si můžete vybrat ten, který vyhovuje vašemu stylu nebo konkrétnímu problému, který se snažíte vyřešit. Na konci dne je Python především o tom, jak vám usnadnit život, takže přijměte jeho flexibilitu!


Vytvoření tabulky data v LuckyTemplates

Vytvoření tabulky data v LuckyTemplates

Zjistěte, proč je důležité mít vyhrazenou tabulku s daty v LuckyTemplates, a naučte se nejrychlejší a nejefektivnější způsob, jak toho dosáhnout.

LuckyTemplates Mobile Reporting Tipy a techniky

LuckyTemplates Mobile Reporting Tipy a techniky

Tento stručný návod zdůrazňuje funkci mobilního hlášení LuckyTemplates. Ukážu vám, jak můžete efektivně vytvářet přehledy pro mobily.

Profesionální servisní analytické zprávy v LuckyTemplates

Profesionální servisní analytické zprávy v LuckyTemplates

V této ukázce LuckyTemplates si projdeme sestavy ukazující profesionální analýzy služeb od firmy, která má více smluv a zákaznických vztahů.

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Aktualizácie Microsoft Power Platform | Microsoft Ignite 2021

Pozrite si kľúčové aktualizácie pre Power Apps a Power Automate a ich výhody a dôsledky pre platformu Microsoft Power Platform.

Bežné funkcie SQL: Prehľad

Bežné funkcie SQL: Prehľad

Objavte niektoré bežné funkcie SQL, ktoré môžeme použiť, ako napríklad reťazec, dátum a niektoré pokročilé funkcie na spracovanie alebo manipuláciu s údajmi.

Vytvoření šablony LuckyTemplates: Průvodce a tipy

Vytvoření šablony LuckyTemplates: Průvodce a tipy

V tomto tutoriálu se naučíte, jak vytvořit dokonalou šablonu LuckyTemplates, která je nakonfigurována podle vašich potřeb a preferencí.

Parametry pole a malé násobky v LuckyTemplates

Parametry pole a malé násobky v LuckyTemplates

V tomto blogu si ukážeme, jak vrstvit parametry pole s malými násobky, abychom vytvořili neuvěřitelně užitečné přehledy a vizuály.

LuckyTemplates Rank a vlastní seskupení

LuckyTemplates Rank a vlastní seskupení

V tomto blogu se dozvíte, jak používat funkce hodnocení LuckyTemplates a vlastní seskupování k segmentaci ukázkových dat a jejich seřazení podle kritérií.

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

Zobrazení kumulativního součtu pouze do určitého data v LuckyTemplates

V tomto tutoriálu se budu zabývat konkrétní technikou, jak zobrazit kumulativní součet pouze do určitého data ve vašich vizuálech v LuckyTemplates.

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Bullet Charts: Pokročilé vlastní vizuální prvky pro LuckyTemplates

Naučte se vytvářet a přizpůsobovat Bullet grafy v LuckyTemplates, které se používají hlavně pro měření výkonu oproti cílovým nebo předchozím rokům.