7 manieren om te controleren of een Python-string een substring bevat

7 manieren om te controleren of een Python-string een substring bevat

Werken met strings is een veelvoorkomende taak in Python. Je moet vaak uitzoeken of een string een andere string bevat.

De eenvoudigste methoden om te controleren of een Python-tekenreeks een subtekenreeks bevat, zijn de 'in'-operator, de functie find() en de methode index(). Complexere scenario's kunnen worden opgelost met reguliere expressies of een externe bibliotheek zoals Panda's.

Dit artikel laat je zien:

  • vier eenvoudige methoden

  • twee meer complexe regex-functies

  • een methode die gebruik maakt van de Pandas-bibliotheek

Je leert elke techniek aan de hand van voorbeelden van hun syntaxis en gebruik. U krijgt ook tips over welke methode het beste is voor verschillende eisen.

Laten we beginnen!

Inhoudsopgave

Basisprincipes van Python-snaren

Een tekenreeks in Python is een reeks tekens die wordt gebruikt om op tekst gebaseerde gegevens weer te geven. Ze kunnen letters, cijfers, symbolen en witruimte bevatten.

Het is een van de ingebouwde gegevenstypen van Python en kan worden gemaakt met:

  • enkele aanhalingstekens (' ')

  • dubbele aanhalingstekens (" ")

  • drievoudige aanhalingstekens ("' "' of """ """)

Tekenreeksen worden geïndexeerd, wat betekent dat u toegang hebt tot specifieke tekens door naar hun indexnummer te verwijzen. De startindex is 0, wat betekent dat het eerste teken van een tekenreeks een index van 0 heeft, het tweede een index van 1, enzovoort.

Vervolgens kijken we naar manieren om te controleren op subtekenreeksen.

4 eenvoudigste manieren om te controleren op subtekenreeksen

Python biedt vele manieren om te controleren of een bepaalde substring bestaat binnen een grotere string. Sommige zijn complexer dan andere. Voor de meest elementaire controles zijn de eenvoudigste methoden de in-operator of een van de drie stringmethoden.

  1. bij exploitant

  2. vind() methode

  3. index() methode

  4. tel() methode

7 manieren om te controleren of een Python-string een substring bevat

1. Bij Operator

De 'in'-operator in Python is een eenvoudige en intuïtieve manier om te controleren of een string bestaat binnen een andere string. Deze operator controleert op lidmaatschap en retourneert een booleaanse waarde:

  • Waar als de subtekenreeks wordt gevonden in de hoofdtekenreeks

  • Onwaar als dat niet zo is

Hier is wat voorbeeldcode:

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

De operator 'in' is hoofdlettergevoelig. Dit betekent dat kleine letters en hoofdletters als verschillend worden behandeld. De bovenstaande code kan de subtekenreeks "hallo" niet vinden, dus retourneert de operator false.

Als u een niet-hoofdlettergevoelige controle wilt uitvoeren, kunt u zowel de hoofdtekenreeks als de subtekenreeks converteren naar dezelfde hoofdlettercombinatie voordat u de controle uitvoert:

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

Het nadeel van de in-operator is dat deze niet de positie van de subtekenreeks binnen de hoofdtekenreeks aangeeft. Daarvoor heb je een andere methode in deze sectie nodig. Lees verder…

2. Find()-methode

De methode find() retourneert de eerste index waarop de subtekenreeks voorkomt, of -1 als de subtekenreeks niet wordt gevonden.

Je roept de methode find() aan op een string s , waarbij je de substring sub als argument doorgeeft . Hier is een voorbeeld:

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")

U kunt optioneel een begin- of eindindex opgeven om uw zoekopdracht te beperken. Het nadeel van deze methode is dat deze stopt bij het eerste optreden.

3. Index()-methode

De methode index() lijkt veel op de methode find() , behalve dat deze een ValueError genereert wanneer de subtekenreeks niet wordt gevonden. Dit betekent dat u het gesprek in een Try/Except-sectie moet plaatsen.

Om de methode index() te gebruiken , roept u deze aan op een tekenreeks s en geeft u de subtekenreeks sub door als 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")

Deze methode stopt ook bij de eerste subtekenreeks in de tekst.

4. Count()-methode

De methode .count() telt hoe vaak een subtekenreeks voorkomt in de oorspronkelijke tekenreeks. Het retourneert een geheel getal dat deze telling vertegenwoordigt. Als de subtekenreeks niet wordt gevonden in de hoofdtekenreeks, retourneert deze 0.

Hier is een eenvoudig voorbeeld dat zoekt naar de letter "o" in de tekst "Hello, world!":

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

2 manieren om strings te matchen met reguliere expressies

Het gebruik van reguliere expressies (regex) is iets ingewikkelder dan de methoden in de vorige sectie. Ze geven je echter meer mogelijkheden om de tekst waarmee je te maken hebt te doorzoeken en te analyseren.

Twee van de gemakkelijkste manieren binnen de re- module zijn:

  1. zoekopdracht()

  2. vind alle()

7 manieren om te controleren of een Python-string een substring bevat

1. opnieuw zoeken()

De functie search() in de module re zoekt naar een patroon in een gegeven tekenreeks en retourneert een match-object als er een match is gevonden. Anders retourneert het Geen .

Standaard is de functie hoofdlettergevoelig. U kunt de vlag re.IgnoreCase gebruiken om hoofdlettergevoeligheid te voorkomen.

Hier is een eenvoudig voorbeeld dat voorwaardelijke instructies gebruikt op basis van of de tekenreeks is gevonden:

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")

Merk op dat deze methode de eerste overeenkomst vindt en vervolgens stopt met zoeken. Als je alle overeenkomsten wilt vinden, dan is de volgende op deze lijst iets voor jou.

2. her.Zoeken()

Deze methode vindt alle exemplaren van een zoekpatroon in een gegeven string en geeft een lijst terug met alle overeenkomsten.

In dit voorbeeld wordt een patroon gebruikt dat overeenkomt met een of meer cijfers in een tekenreeks. De tekenreeks "123, 456, 789" bevat drie cijferreeksen.

import re 

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

print(numbers)

Dit is het antwoord van de voorbeeldcode: ['123', '456', '789'].

Substrings zoeken met panda's

7 manieren om te controleren of een Python-string een substring bevat

Pandas is een populaire open-source data-analyse- en manipulatiebibliotheek voor Python. Het biedt gegevensstructuren en functies die nodig zijn om gestructureerde gegevens te manipuleren en te analyseren.

Een van de primaire gegevensstructuren die door Panda's worden geleverd , is het DataFrame. U kunt deze veelzijdige gegevensstructuur gebruiken om te controleren op de ene string in de andere.

Het voordeel van Panda's is dat het codepakketten biedt die u uitgebreid in andere programmeertalen zou moeten schrijven. Concreet zit er veel kracht in de bevat-functie.

str.contains() Functie in Panda's

De methode str.contains() test of een opgegeven patroon of reguliere expressie zich binnen een tekenreeks van een DataFrame-kolom bevindt.

Hier is een voorbeeld dat de bibliotheek importeert en zoekt naar een tekenreeks in een lijst met tekenreeksen:

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)

In dit voorbeeld zoeken we naar de subtekenreeks 'an' in de kolom 'fruit' en filteren we de DataFrame dienovereenkomstig. De uitvoer zou zijn:

  • 1 banaan

  • 4 sinaasappel

Als je op zoek bent naar meer voorbeelden van wat panda's kunnen, bekijk dan deze video:

Tips voor het kiezen van een specifieke methode in Python

De keuze van de methode hangt grotendeels af van de specifieke vereisten van uw taak.

Hier zijn vier redenen om een ​​van de methoden te kiezen die je in dit artikel hebt geleerd, plus een bonusmethode die je elders op deze blog leert:

  1. Snelheid van verwerking

  2. U moet de locatie van de subtekenreeks weten

  3. U moet weten hoe vaak de subtekenreeks voorkomt

  4. U wilt complexe patronen matchen

  5. Tekstanalyse uitvoeren

1. Snelheid van verwerking

7 manieren om te controleren of een Python-string een substring bevat

De 'in' 0perator is de beste keuze als je gewoon wilt weten of er een substring bestaat binnen een string.

Het is eenvoudig, intuïtief en snel voor dit doel. Het geeft echter geen informatie over de locatie of het aantal subtekenreeksen.

2. Locatie van subtekenreeks

Gebruik de methoden .find() of .index() als u de positie wilt weten van de eerste keer dat een subtekenreeks binnen een tekenreeks voorkomt.

Ze retourneren allebei de index van de eerste keer dat de subtekenreeks voorkomt.

3. Telling van subtekenreeks

Gebruik de methode .count() als u wilt weten hoe vaak een subtekenreeks voorkomt in een tekenreeks.

4. Complexe patronen

Als u complexe patronen moet matchen of niet-hoofdlettergevoelige zoekopdrachten moet uitvoeren, zijn reguliere expressies het meest flexibel. De functie re.search() kan patronen verwerken die verder gaan dan eenvoudige subtekenreeksen en kan gemakkelijk hoofdlettergevoelige zoekopdrachten uitvoeren.

Reguliere expressies kunnen echter overkill zijn voor eenvoudige subtekenreekscontroles en kunnen ook langzamer en complexer zijn om te gebruiken en te onderhouden.

5. Tekstanalyse uitvoeren

Bekijk ons ​​artikel over tekstanalyse in Python , waarin wordt uitgelegd hoe u met de textblob-bibliotheek kunt werken.

U kunt de .tags- functie gebruiken om te controleren op woordsoorten of de .ngram- functie om woorden te vinden die vaak samen in een document voorkomen.

Laatste gedachten

Je hebt zeven methoden geleerd om te controleren of een woord of stringobject in een ander woord of tekenreeks voorkomt. Deze omvatten lidmaatschapsoperators, ingebouwde functies, regex en Pandas-functies.

Elke methode is correct voor sommige situaties, maar niet voor alle. Gebruik dit artikel als een spiekbriefje terwijl je de programmeertaal Python onder de knie hebt en de beste oplossing voor je stringanalysetaak gebruikt.

Vergeet niet dat er geen one-size-fits-all methode is. Elke benadering heeft zijn eigen voordelen en eigenaardigheden, dus voel je vrij om degene te kiezen die past bij jouw stijl of het specifieke probleem dat je probeert op te lossen. Uiteindelijk draait het bij Python allemaal om het gemakkelijker maken van je leven, dus omarm de flexibiliteit ervan!


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten