Python: Tarkista, sisältääkö merkkijono alimerkkijonon

Sen tarkistaminen, sisältääkö merkkijono alimerkkijonoa, auttaa yleistämään ehtoja ja luomaan joustavampaa koodia. Lisäksi verkkotunnuksesi mallista riippuen – jos tarkistat, sisältääkö merkkijono alimerkkijonon, voit myös päätellä kohteen kenttiä, jos merkkijono koodaa kentän itsessään.

Tässä oppaassa tarkastelemme kuinka tarkistaa, sisältääkö merkkijono alimerkkijono Pythonissa.

- in operaattori

Helpoin tapa tarkistaa, sisältääkö Python-merkkijono alimerkkijonoa, on käyttää in operaattori.

- in -operaattoria käytetään Python-jäsenyyden tietorakenteiden tarkistamiseen. Se palauttaa Boolen (joko True or False). Voit tarkistaa, sisältääkö merkkijono alimerkkijonon Pythonissa käyttämällä in operaattori, kutsumme sen yksinkertaisesti supermerkkijonoon:

fullstring = "StackAbuse"
substring = "tack"

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

Tämä operaattori on lyhenne kohteen kutsumiseen __contains__ -menetelmällä, ja se toimii myös hyvin sen tarkistamiseen, onko jokin kohde luettelossa. On syytä huomata, että se on ei nollaturvallinen, joten jos meidän fullstring osoitti None, tehdään poikkeus:

TypeError: argument of type 'NoneType' is not iterable

Tämän välttämiseksi sinun kannattaa ensin tarkistaa, osoittaako se None tai ei:

fullstring = None
substring = "tack"

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

- String.index() Menetelmä

Pythonin merkkijonotyypillä on menetelmä nimeltään index() jota voidaan käyttää merkkijonon ensimmäisen esiintymän alimerkkijonon aloitusindeksin löytämiseen.

Jos osamerkkijonoa ei löydy, a ValueError poikkeus heitetään, jota voidaan käsitellä try-except-else -lohkolla:

fullstring = "StackAbuse"
substring = "tack"

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

Tämä menetelmä on hyödyllinen, jos sinun on myös tiedettävä alimerkkijonon sijainti, toisin kuin sen olemassaolo koko merkkijonossa. Itse menetelmä palauttaa indeksin:

print(fullstring.index(substring))

Vaikka - sen tarkistamiseksi, sisältääkö merkkijono alimerkkijonoa, tämä on monisanainen lähestymistapa.

String.find() -menetelmä

String-luokassa on toinen menetelmä nimeltään find() joka on kätevämpi käyttää kuin index(), lähinnä siksi, että meidän ei tarvitse huolehtia poikkeusten käsittelystä.

If find() ei löydä vastaavuutta, se palauttaa -1, muussa tapauksessa se palauttaa suurimman merkkijonon alimerkkijonon vasemmanpuoleisimman indeksin:

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

fullstring = "StackAbuse"
substring = "tack"

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

Luonnollisesti se suorittaa saman haun kuin index() ja palauttaa päämerkkijonon alimerkkijonon alun indeksin:

print(fullstring.find(substring))

Säännölliset lausekkeet (säännöllinen lauseke)

Säännölliset lausekkeet tarjoavat joustavamman (vaikkakin monimutkaisemman) tavan tarkistaa merkkijonojen mallisovitus. Säännöllisten lausekkeiden avulla voit tehdä joustavia ja tehokkaita hakuja paljon suurempien hakutilojen kautta yksinkertaisten tarkistusten sijaan, kuten aiemmat.

Python toimitetaan sisäänrakennetulla moduulilla säännöllisille lausekkeille, nimeltään re. re moduuli sisältää toiminnon nimeltä search(), jota voimme käyttää vastaamaan alimerkkijonomallia:

from re import search

fullstring = "StackAbuse"
substring = "tack"

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

Tämä menetelmä on paras, jos tarvitset monimutkaisempaa täsmäytystoimintoa, kuten kirjainkoolla välitöntä täsmäämistä, tai jos kyseessä on suuri hakuväli. Muutoin säännöllisen lausekkeen monimutkaisuutta ja hitaampaa nopeutta tulisi välttää yksinkertaisissa osamerkkijonovastaavissa käyttötapauksissa.

kirjailijasta

Tämän artikkelin on kirjoittanut Jacob Stopak, ohjelmistokonsultti ja -kehittäjä, joka haluaa auttaa muita parantamaan elämäänsä koodin avulla. Jacob on luoja Ensimmäinen sitoumus – sivusto, joka on omistettu auttamaan uteliaita kehittäjiä oppimaan, kuinka heidän suosikkiohjelmansa koodataan. Sen esillä oleva projekti auttaa ihmisiä oppia Git kooditasolla.

Aikaleima:

Lisää aiheesta Stackabus