Å 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å.