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!


Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.

Extrahera LuckyTemplates-teman och bilder från PBIX

Extrahera LuckyTemplates-teman och bilder från PBIX

Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

Excel Formler Fuskblad: Mellanvägledning

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

LuckyTemplates Kalendertabell: Vad är det och hur man använder det

Python i LuckyTemplates: Hur man installerar och ställer in

Python i LuckyTemplates: Hur man installerar och ställer in

Lär dig hur du installerar programmeringsspråket Python i LuckyTemplates och hur du använder dess verktyg för att skriva koder och visa bilder.

Beräkna dynamiska vinstmarginaler – enkel analys av LuckyTemplates med DAX

Beräkna dynamiska vinstmarginaler – enkel analys av LuckyTemplates med DAX

Lär dig hur du beräknar dynamiska vinstmarginaler vid sidan av LuckyTemplates och hur du kan få fler insikter genom att gräva djupare i resultaten.

Sortering av datumtabellkolumner i LuckyTemplates

Sortering av datumtabellkolumner i LuckyTemplates

Lär dig hur du sorterar fälten från en utökad datumtabells kolumner korrekt. Detta är en bra strategi att göra för svåra fält.

Hitta dina bästa produkter för varje region i LuckyTemplates med DAX

Hitta dina bästa produkter för varje region i LuckyTemplates med DAX

I den här artikeln går jag igenom hur du kan hitta dina toppprodukter per region med hjälp av DAX-beräkningar i LuckyTemplates, inklusive TOPN- och CALCULATE-funktionerna.

Skräpdimension: Vad är det och varför det är allt annat än skräp

Skräpdimension: Vad är det och varför det är allt annat än skräp

Lär dig hur du använder en skräpdimension för flaggor med låg kardinalitet som du vill infoga i din datamodell på ett effektivt sätt.