Onko Pythonissa merkkijono 'contains' substring-metodi?

Etsin string.contains- tai string.indexof-metodia Pythonissa.

Haluan tehdä:

if not somestring.contains("blah"):
   continue
Ratkaisu

Voit käyttää in-operaattoria:

if "blah" not in somestring: 
    continue
Kommentit (14)

Jos kyseessä on vain osajonohaku, voit käyttää string.find("substring").

Sinun on kuitenkin oltava hieman varovainen find, index ja in kanssa, koska ne ovat osajonohakuja. Toisin sanoen tämä:

s = "This be a string"
if s.find("is") == -1:
    print "No 'is' here!"
else:
    print "Found 'is' in the string."

Se tulostaisi Found 'is' in the string. Vastaavasti if "is" in s: arvioitaisiin True. Tämä voi olla sitä, mitä haluat, mutta ei välttämättä sitä, mitä et halua.

Kommentit (8)

jos neula heinäsuovassa: on normaali käyttötapa, kuten @Michael sanoo - se perustuu in-operaattoriin, joka on luettavampi ja nopeampi kuin metodikutsu.

Jos todella tarvitset metodia operaattorin sijasta (esim. tehdäksesi jotain outoa key= hyvin omituista lajia varten...?), se olisi 'haystack'.__contains__. Mutta koska esimerkkisi on tarkoitettu käytettäväksi if:ssä, et taida oikeasti tarkoittaa sitä, mitä sanot;-). Ei ole hyvä muoto (eikä luettavaa eikä tehokasta) käyttää erikoismetodeja suoraan - niitä on sen sijaan tarkoitus käyttää operaattoreiden ja sisäänrakennettujen metodien kautta, jotka delegoivat niitä.

Kommentit (0)