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!


Scatter Plot In R Script: Jak vytvořit a importovat

Scatter Plot In R Script: Jak vytvořit a importovat

V tomto tutoriálu se naučíte, jak vytvořit vizualizaci R bodového grafu v LuckyTemplates pomocí vizuálu R Script.

Zvýšte úroveň ponuky externých nástrojov v LuckyTemplates

Zvýšte úroveň ponuky externých nástrojov v LuckyTemplates

Spoznajte najlepšie externé nástroje v LuckyTemplates a naučte sa, ako ich nainštalovať na plochu LuckyTemplates. Poskytujú vašim prehľadom viac možností.

Vytvořte rychlé měření v LuckyTemplates s Quick Measures Pro

Vytvořte rychlé měření v LuckyTemplates s Quick Measures Pro

V tomto blogu se naučíme a procvičíme si používání Quick Measures Pro, nepostradatelného externího nástroje při provádění rychlých měření v LuckyTemplates.

Zobrazte dátum/čas posledného obnovenia v prehľadoch LuckyTemplates

Zobrazte dátum/čas posledného obnovenia v prehľadoch LuckyTemplates

Zistite, ako nájsť presný dátum posledného obnovenia prehľadu LuckyTemplates. Všetko, čo musíte urobiť, je použiť M kód a pokročilý editor.

Dynamické filtrovanie finančného roka v správach LuckyTemplates

Dynamické filtrovanie finančného roka v správach LuckyTemplates

V tomto návode Ill diskutujeme o tom, ako môžete efektívne filtrovať viacero údajov cez finančný rok v rámci prehľadov LuckyTemplates.

Príručka a ovládanie jazyka Power Query M

Príručka a ovládanie jazyka Power Query M

Tento tutoriál bude diskutovať o tom, ako úspešne implementovať jazyk M a vyriešiť bežné chyby v editore Power Query.

Sloupec indexu Pandas Drop: Vysvětleno s příklady

Sloupec indexu Pandas Drop: Vysvětleno s příklady

Sloupec indexu Pandas Drop: Vysvětleno s příklady

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

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

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

Prehľad dynamického obsahu Power Automate

Prehľad dynamického obsahu Power Automate

Pochopte, čo je dynamický obsah Power Automate a ako umožňuje používateľom vyberať odkazy na polia z predchádzajúcich krokov alebo zapisovať výrazy.

Změna umístění souboru pomocí parametru dotazu v LuckyTemplates

Změna umístění souboru pomocí parametru dotazu v LuckyTemplates

V tomto tutoriálu se naučíte, jak sdílet soubor s osobou, která není součástí vaší společnosti, pomocí parametru dotazu sql v LuckyTemplates.