7 måter å sjekke om en Python-streng inneholder en understreng

Arbeid med strenger er en vanlig oppgave i Python. Du må ofte finne ut om en streng inneholder en annen streng.

De enkleste metodene for å sjekke om en Python-streng inneholder en understreng inkluderer 'in'-operatoren, find()-funksjonen og index()-metoden. Mer komplekse scenarier kan løses med regulære uttrykk eller et eksternt bibliotek som Pandas.

Denne artikkelen viser deg:

  • fire enkle metoder

  • to mer komplekse regex-funksjoner

  • en metode som bruker Pandas-biblioteket

Du vil lære hver teknikk gjennom eksempler på syntaks og bruk. Du vil også få tips om hvilken metode som passer best for ulike krav.

La oss komme i gang!

Innholdsfortegnelse

Grunnleggende om Python Strings

En streng i Python er en sekvens av tegn som brukes til å representere tekstbaserte data. De kan inneholde bokstaver, sifre, symboler og mellomrom.

Det er en av Pythons innebygde datatyper og kan opprettes ved å bruke enten:

  • enkelt anførselstegn (' ')

  • doble anførselstegn (" ")

  • trippel anførselstegn (”' ”' eller “”” “””)

Strenger er indeksert, noe som betyr at du kan få tilgang til spesifikke tegn ved å referere til deres indeksnummer. Startindeksen er 0, som betyr at det første tegnet i en streng har en indeks på 0, det andre har en indeks på 1, og så videre.

Deretter ser vi på måter å se etter understrenger.

4 enkleste måter å se etter understrenger

Python gir mange måter å sjekke om en bestemt delstreng finnes i en større streng. Noen er mer komplekse enn andre. For de mest grunnleggende kontrollene er de enkleste metodene in-operatoren eller en av tre strengmetoder.

  1. i operatør

  2. find() metode

  3. index() metode

  4. count() metode

7 måter å sjekke om en Python-streng inneholder en understreng

1. I Operatør

'in'-operatoren i Python er en enkel og intuitiv måte å sjekke om en streng finnes i en annen streng. Denne operatøren sjekker for medlemskap og returnerer en boolsk verdi:

  • Sant hvis delstrengen finnes innenfor hovedstrengen

  • Falsk hvis den ikke er det

Her er litt eksempelkode:

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

"In"-operatøren skiller mellom store og små bokstaver. Dette betyr at den behandler små og store bokstaver som forskjellige. Koden ovenfor vil ikke finne delstrengen "hei", så operatøren returnerer falsk.

Hvis du vil utføre en sjekk som ikke skiller mellom store og små bokstaver, kan du konvertere både hovedstrengen og understrengen til samme store og små bokstaver før du utfører kontrollen:

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

Ulempen med in-operatoren er at den ikke gir posisjonen til delstrengen i hovedstrengen. For det trenger du en annen metode i denne delen. Les videre…

2. Finn()-metoden

Find ()- metoden returnerer den første indeksen der delstrengen vises, eller -1 hvis delstrengen ikke blir funnet.

Du kaller find()- metoden på en streng s , og sender understrengen som et argument. Her er et eksempel:

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 eventuelt spesifisere en start- eller sluttindeks for å begrense søket. Ulempen med denne metoden er at den stopper ved første gang.

3. Indeks() metode

Indeks ()- metoden er ganske lik find()- metoden, bortsett fra at den gir en ValueError når delstrengen ikke blir funnet. Dette betyr at du bør legge samtalen inn i en Prøv/unntatt-del.

For å bruke index()- metoden kaller du den på en streng s , og sender understrengen som et 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")

Denne metoden stopper også ved den første delstrengen inne i teksten.

4. Count() metode

.count () -metoden teller hvor mange ganger en delstreng forekommer i den opprinnelige strengen. Den returnerer et heltall som representerer dette antallet. Hvis delstrengen ikke finnes i hovedstrengen, returnerer den 0.

Her er et enkelt eksempel som ser etter bokstaven "o" i teksten "Hei, verden!":

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

2 måter å matche strenger med regulære uttrykk

Å bruke (regex) er litt mer kompleks enn metodene i forrige avsnitt. De gir deg imidlertid flere muligheter for å søke og analysere teksten du har å gjøre med.

To av de enkleste måtene i re- modulen er:

  1. Søk()

  2. finneall()

7 måter å sjekke om en Python-streng inneholder en understreng

1. re.Search()

Search ()- funksjonen i re- modulen søker etter et mønster i en gitt streng og returnerer et matchobjekt hvis et samsvar blir funnet. Ellers returnerer den Ingen .

Som standard skiller funksjonen mellom store og små bokstaver. Du kan bruke re.IgnoreCase- flagget for å unngå store og små bokstaver.

Her er et enkelt eksempel som bruker betingede utsagn basert på om strengen er funnet:

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 at denne metoden finner det første treffet og deretter slutter å søke. Hvis du vil finne alle treff, så er den neste på denne listen for deg.

2. re.Findall()

Denne metoden finner alle forekomster av et søkemønster i en gitt streng og returnerer en liste som inneholder alle treff.

Dette eksemplet bruker et mønster som samsvarer med ett eller flere siffer i en streng. Tekststrengen "123, 456, 789" inneholder tre sekvenser med sifre.

import re 

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

print(numbers)

Dette er svaret fra eksempelkoden: ['123', '456', '789'].

Hvordan finne understrenger med pandaer

7 måter å sjekke om en Python-streng inneholder en understreng

Pandas er et populært dataanalyse- og manipulasjonsbibliotek med åpen kildekode for Python. Det gir datastrukturer og funksjoner som trengs for å manipulere og analysere strukturerte data.

En av de primære datastrukturene levert av Pandas er DataFrame. Du kan bruke denne allsidige datastrukturen til å se etter en streng i en annen.

Fordelen med Pandas er at den gir pakker med kode som du må skrive mye andre programmeringsspråk. Spesielt er mye kraft pakket inne i inneholder-funksjonen.

str.contains() Funksjon i Pandas

Str.contains () -metoden tester om et spesifisert mønster eller regulært uttrykk er inneholdt i en streng i en DataFrame-kolonne.

Her er et eksempel som importerer biblioteket og søker etter en streng i en liste med strenger:

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 dette eksemplet søker vi etter understrengen 'an' i 'frukt'-kolonnen og filtrerer DataFrame deretter. Utgangen vil være:

  • 1 banan

  • 4 oransje

Hvis du leter etter flere eksempler på hva Pandas kan gjøre, sjekk ut denne videoen:

Tips for å velge en spesifikk metode i Python

Valget av metode avhenger i stor grad av de spesifikke kravene til oppgaven din.

Her er fire grunner til å velge en av metodene du har lært fra denne artikkelen, pluss en bonusmetode du vil lære andre steder på denne bloggen:

  1. Behandlingshastighet

  2. Du må vite plasseringen av delstrengen

  3. Du må vite antall forekomster av delstrengen

  4. Du ønsker å matche komplekse mønstre

  5. Utføre tekstanalyse

1. Behandlingshastighet

7 måter å sjekke om en Python-streng inneholder en understreng

'in' 0perator er det beste valget hvis du bare vil vite om det finnes en understreng i en streng.

Det er enkelt, intuitivt og raskt for dette formålet. Den gir imidlertid ikke informasjon om plasseringen eller antallet av delstrengen.

2. Plassering av understreng

Bruk metodene .find() eller .index() hvis du trenger å vite posisjonen til den første forekomsten av en delstreng i en streng.

De returnerer begge indeksen for den første forekomsten av delstrengen.

3. Antall delstreng

Bruk .count() -metoden når du vil vite hvor mange ganger en delstreng forekommer i en streng.

4. Komplekse mønstre

Hvis du trenger å matche komplekse mønstre eller utføre søk som ikke skiller mellom store og små bokstaver, er regulære uttrykk de mest fleksible. Re.search () -funksjonen kan håndtere mønstre utover enkle understrenger og kan enkelt utføre søk som ikke skiller mellom store og små bokstaver.

Vanlige uttrykk kan imidlertid være overkill for enkle understrengsjekker og kan også være tregere og mer komplekse å bruke og vedlikeholde.

5. Utføre tekstanalyse

Sjekk ut artikkelen vår på , som viser deg hvordan du jobber med textblob-biblioteket.

Du kan bruke .tags- funksjonen for å se etter deler av tale eller .ngram- funksjonen for å finne ord som ofte vises sammen i et dokument.

Siste tanker

Du har lært syv metoder for å sjekke om et ord eller strengobjekt finnes i et annet. Disse inkluderte medlemskapsoperatører, innebygde funksjoner, regex og Pandas-funksjoner.

Hver metode er riktig for noen situasjoner, men ikke for alle. Bruk denne artikkelen når du mestrer Python-programmeringsspråket og bruker den beste løsningen for strenganalyseoppgaven din.

Husk at det ikke finnes en metode som passer for alle. Hver tilnærming har sine egne fordeler og særheter, så velg gjerne den som passer stilen din eller det spesielle problemet du prøver å løse. På slutten av dagen handler Python om å gjøre livet ditt enklere, så omfavn fleksibiliteten!


Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

Python i LuckyTemplates: Hvordan installere og sette opp

Python i LuckyTemplates: Hvordan installere og sette opp

Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.

Sortering av datotabellkolonner i LuckyTemplates

Sortering av datotabellkolonner i LuckyTemplates

Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.