7 sätt att kontrollera om en Python-sträng innehåller en delsträng

Att arbeta med strängar är en vanlig uppgift i Python. Du behöver ofta ta reda på om en sträng innehåller en annan sträng.

De enklaste metoderna för att kontrollera om en Python-sträng innehåller en delsträng inkluderar operatorn 'in', find()-funktionen och index()-metoden. Mer komplexa scenarier kan lösas med reguljära uttryck eller ett externt bibliotek som Pandas.

Den här artikeln visar dig:

  • fyra enkla metoder

  • två mer komplexa regex-funktioner

  • en metod som använder Pandas-biblioteket

Du kommer att lära dig varje teknik genom exempel på deras syntax och användning. Du får också tips om vilken metod som är bäst för olika behov.

Låt oss börja!

Innehållsförteckning

Grunderna i Python Strings

En sträng i Python är en sekvens av tecken som används för att representera textbaserad data. De kan innehålla bokstäver, siffror, symboler och blanksteg.

Det är en av Pythons inbyggda datatyper och kan skapas med antingen:

  • enstaka citattecken (' ')

  • dubbla citattecken (” “)

  • tredubbla citattecken (”' ”' eller “”” “””)

Strängar är indexerade, vilket innebär att du kan komma åt specifika tecken genom att referera till deras indexnummer. Startindexet är 0, vilket betyder att det första tecknet i en sträng har ett index på 0, det andra har ett index på 1, och så vidare.

Därefter tittar vi på sätt att leta efter delsträngar.

4 enklaste sätten att söka efter delsträngar

Python tillhandahåller många sätt att kontrollera om en viss delsträng finns inom en större sträng. Vissa är mer komplexa än andra. För de mest grundläggande kontrollerna är de enklaste metoderna in-operatorn eller en av tre strängmetoder.

  1. i operatör

  2. find() metod

  3. index() metod

  4. count() metod

7 sätt att kontrollera om en Python-sträng innehåller en delsträng

1. I Operatör

"in"-operatorn i Python är ett enkelt och intuitivt sätt att kontrollera om en sträng finns i en annan sträng. Den här operatören söker efter medlemskap och returnerar ett booleskt värde:

  • Sant om delsträngen finns inom huvudsträngen

  • Falskt om det inte är det

Här är några exempelkoder:

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

Operatören "in" är skiftlägeskänslig. Det betyder att den behandlar gemener och versaler som olika. Ovanstående kod hittar inte delsträngen "hej", så operatorn returnerar falskt.

Om du vill utföra en skiftlägesokänslig kontroll kan du konvertera både huvudsträngen och delsträngen till samma skiftläge innan du utför kontrollen:

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

Nackdelen med in-operatorn är att den inte ger positionen för delsträngen inom huvudsträngen. För det skulle du behöva en annan metod i det här avsnittet. Läs vidare…

2. Hitta() metod

Metoden find() returnerar det första indexet där delsträngen visas, eller -1 om delsträngen inte hittas.

Du anropar metoden find() på en sträng s , och skickar substrängen som ett argument. Här är ett exempel:

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

Du kan valfritt ange ett start- eller slutindex för att begränsa din sökning. Nackdelen med denna metod är att den stannar vid första tillfället.

3. Index() Metod

Metoden index () är ganska lik metoden find() , förutom att den höjer ett ValueError när delsträngen inte hittas. Det betyder att du bör avsluta samtalet i en Try/Except-sektion.

För att använda metoden index() anropar du den på en sträng s , och skickar substrängen som ett 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")

Denna metod stannar också vid den första delsträngen i texten.

4. Count()-metod

Metoden .count() räknar hur många gånger en delsträng förekommer i den ursprungliga strängen. Den returnerar ett heltal som representerar detta antal. Om delsträngen inte hittas i huvudsträngen, returnerar den 0.

Här är ett enkelt exempel som letar efter bokstaven "o" i texten "Hej världen!":

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

2 sätt att matcha strängar med reguljära uttryck

Att använda (regex) är lite mer komplext än metoderna i föregående avsnitt. Däremot ger de dig fler alternativ för att söka och analysera texten du har att göra med.

Två av de enklaste sätten inom re- modulen är:

  1. Sök()

  2. hitta alla()

7 sätt att kontrollera om en Python-sträng innehåller en delsträng

1. re.Search()

Search ()- funktionen i re- modulen söker efter ett mönster i en given sträng och returnerar ett matchningsobjekt om en matchning hittas. Annars returnerar den Ingen .

Som standard är funktionen skiftlägeskänslig. Du kan använda flaggan re.IgnoreCase för att undvika skiftlägeskänslighet.

Här är ett enkelt exempel som använder villkorliga uttalanden baserat på om strängen hittas:

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

Observera att den här metoden hittar den första matchningen och sedan slutar söka. Om du vill hitta alla matchningar, då är nästa på den här listan för dig.

2. re.Findall()

Denna metod hittar alla förekomster av ett sökmönster i en given sträng och returnerar en lista som innehåller alla matchningar.

Det här exemplet använder ett mönster som matchar en eller flera siffror i en sträng. Textsträngen "123, 456, 789" innehåller tre siffror.

import re 

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

print(numbers)

Detta är svaret från exempelkoden: ['123', '456', '789'].

Hur man hittar delsträngar med pandor

7 sätt att kontrollera om en Python-sträng innehåller en delsträng

Pandas är ett populärt bibliotek för dataanalys och manipulation med öppen källkod för Python. Den tillhandahåller datastrukturer och funktioner som behövs för att manipulera och analysera strukturerad data.

En av de primära datastrukturerna som tillhandahålls av Pandas är DataFrame. Du kan använda denna mångsidiga datastruktur för att leta efter en sträng i en annan.

Fördelen med Pandas är att den tillhandahåller kodpaket som du skulle behöva skriva mycket andra programmeringsspråk. Specifikt är mycket kraft packad inuti innehåller-funktionen.

str.contains() Funktion i Pandas

Metoden str.contains () testar om ett specificerat mönster eller reguljärt uttryck finns i en sträng i en DataFrame-kolumn.

Här är ett exempel som importerar biblioteket och söker efter en sträng i en lista med strängar:

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)

I det här exemplet söker vi efter delsträngen 'an' i kolumnen 'frukter' och filtrerar DataFrame därefter. Utgången skulle vara:

  • 1 banan

  • 4 apelsiner

Om du letar efter fler exempel på vad Pandas kan göra, kolla in den här videon:

Tips för att välja en specifik metod i Python

Valet av metod beror till stor del på de specifika kraven för din uppgift.

Här är fyra anledningar till att välja en av metoderna du har lärt dig från den här artikeln, plus en bonusmetod som du kommer att lära dig någon annanstans på den här bloggen:

  1. Bearbetningshastighet

  2. Du måste veta platsen för delsträngen

  3. Du måste veta antalet förekomster av delsträngen

  4. Du vill matcha komplexa mönster

  5. Utföra textanalys

1. Bearbetningshastighet

7 sätt att kontrollera om en Python-sträng innehåller en delsträng

'in' 0peratorn är det bästa valet om du bara vill veta om det finns en delsträng i en sträng.

Det är enkelt, intuitivt och snabbt för detta ändamål. Den ger dock ingen information om platsen eller antalet delsträngar.

2. Placering av delsträng

Använd metoderna .find() eller .index() om du behöver veta positionen för den första förekomsten av en delsträng i en sträng.

De returnerar båda indexet för den första förekomsten av delsträngen.

3. Antal delsträngar

Använd metoden .count() när du vill veta hur många gånger en delsträng förekommer i en sträng.

4. Komplexa mönster

Om du behöver matcha komplexa mönster eller göra sökningar som inte är skiftlägeskänsliga är reguljära uttryck det mest flexibla. Funktionen re.search() kan hantera mönster bortom enkla delsträngar och kan enkelt utföra skiftlägesokänsliga sökningar.

Men reguljära uttryck kan vara överdrivet för enkla delsträngskontroller och kan också vara långsammare och mer komplexa att använda och underhålla.

5. Utföra textanalys

Kolla in vår artikel på , som visar hur du arbetar med textblob-biblioteket.

Du kan använda .tags -funktionen för att söka efter orddelar eller .ngram -funktionen för att hitta ord som ofta förekommer tillsammans i ett dokument.

Slutgiltiga tankar

Du har lärt dig sju metoder för att kontrollera om ett ord eller strängobjekt finns i ett annat. Dessa inkluderade medlemsoperatörer, inbyggda funktioner, regex och Pandas-funktioner.

Varje metod är korrekt för vissa situationer men inte för alla. Använd den här artikeln när du behärskar Python-programmeringsspråket och använder den bästa lösningen för din stränganalysuppgift.

Kom ihåg att det inte finns någon metod som passar alla. Varje tillvägagångssätt har sina egna fördelar och egenheter, så välj gärna den som passar din stil eller det specifika problem du försöker lösa. I slutet av dagen handlar Python om att göra ditt liv enklare, så omfamna dess flexibilitet!


Skapa en datumtabell i LuckyTemplates

Skapa en datumtabell i LuckyTemplates

Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.

LuckyTemplates mobilrapporteringstips och tekniker

LuckyTemplates mobilrapporteringstips och tekniker

Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.

Professional Service Analytics-rapporter i LuckyTemplates

Professional Service Analytics-rapporter i LuckyTemplates

I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.

Vanliga SQL-funktioner: En översikt

Vanliga SQL-funktioner: En översikt

Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.

LuckyTemplates Skapa mall: Guide och tips

LuckyTemplates Skapa mall: Guide och tips

I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.

Fältparametrar och små multiplar i LuckyTemplates

Fältparametrar och små multiplar i LuckyTemplates

I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.

LuckyTemplates Rank och anpassad gruppering

LuckyTemplates Rank och anpassad gruppering

I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.