Wat is zelf in Python: voorbeelden uit de echte wereld
Wat is zelf in Python: voorbeelden uit de echte wereld
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.
bij exploitant
vind() methode
index() methode
tel() methode
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:
zoekopdracht()
vind alle()
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
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:
Snelheid van verwerking
U moet de locatie van de subtekenreeks weten
U moet weten hoe vaak de subtekenreeks voorkomt
U wilt complexe patronen matchen
Tekstanalyse uitvoeren
1. Snelheid van verwerking
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
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.
In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.
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.
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.
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.
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.
Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.
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