Python: Sjekk om streng inneholder delstreng

Å sjekke om en streng inneholder en understreng hjelper til med å generalisere betingelser og lage mer fleksibel kode. I tillegg, avhengig av domenemodellen din, kan det å sjekke om en streng inneholder en understreng også tillate deg å utlede felt i et objekt, hvis en streng koder for et felt i seg selv.

I denne guiden skal vi ta en titt på hvordan sjekke om en streng inneholder en understreng i Python.

De in operatør

Den enkleste måten å sjekke om en Python-streng inneholder en understreng er å bruke in operatør.

De in operator brukes til å sjekke datastrukturer for medlemskap i Python. Den returnerer en boolsk (enten True or False). For å sjekke om en streng inneholder en delstreng i Python ved å bruke in operatør, vi bare påkaller den på superstrengen:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Denne operatøren er en forkortelse for å kalle et objekts __contains__ metode, og fungerer også bra for å sjekke om et element finnes i en liste. Det er verdt å merke seg at det er ikke null-sikker, så hvis vår fullstring pekte på None, vil et unntak bli kastet:

TypeError: argument of type 'NoneType' is not iterable

For å unngå dette, bør du først sjekke om det peker på None eller ikke:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

De String.index() Metode

String-typen i Python har en metode som heter index() som kan brukes til å finne startindeksen for den første forekomsten av en delstreng i en streng.

Hvis understrengen ikke blir funnet, a ValueError unntak blir kastet, som kan håndteres med en try-except-else-blokk:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

Denne metoden er nyttig hvis du også trenger å vite posisjonen til delstrengen, i motsetning til bare dens eksistens innenfor hele strengen. Selve metoden returnerer indeksen:

print(fullstring.index(substring))

Skjønt – for å sjekke om en streng inneholder en delstreng, er dette en detaljert tilnærming.

String.find()-metoden

String-klassen har en annen metode kalt find() som er mer praktisk å bruke enn index(), hovedsakelig fordi vi ikke trenger å bekymre oss for å håndtere eventuelle unntak.

If find() finner ikke et samsvar, returnerer det -1, ellers returnerer det indeksen lengst til venstre for delstrengen i den større strengen:

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

Naturligvis utfører den samme søk som index() og returnerer indeksen for starten av delstrengen i den overordnede strengen:

print(fullstring.find(substring))

Regulære uttrykk (RegEx)

Regulære uttrykk gir en mer fleksibel (om enn mer kompleks) måte å sjekke strenger for mønstertilpasning. Med Regular Expressions kan du utføre fleksible og kraftige søk gjennom mye større søkeområder, i stedet for enkle kontroller, som tidligere.

Python leveres med en innebygd modul for regulære uttrykk, kalt re. De re modulen inneholder en funksjon kalt search(), som vi kan bruke for å matche et delstrengmønster:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

Denne metoden er best hvis du trenger en mer kompleks samsvarsfunksjon, som for eksempel ufølsom matching, eller hvis du har å gjøre med store søkerom. Ellers bør komplikasjonen og den langsommere hastigheten til regex unngås for enkle brukstilfeller som samsvarer med understrenger.

om forfatteren

Denne artikkelen ble skrevet av Jacob Stopak, en programvarekonsulent og utvikler med lidenskap for å hjelpe andre med å forbedre livet deres gjennom kode. Jakob er skaperen av Innledende forpliktelse – et nettsted dedikert til å hjelpe nysgjerrige utviklere med å lære hvordan favorittprogrammene deres er kodet. Det omtalte prosjektet hjelper folk lær Git på kodenivå.

Tidstempel:

Mer fra Stackabuse