Vai Python ir virknes 'contains' apakšvirknes metode?

Es meklēju string.contains vai string.indexof metodi Python valodā.

Es gribu darīt:

if not somestring.contains("blah"):
   continue
Risinājums

Varat izmantot in operatoru:

if "blah" not in somestring: 
    continue
Komentāri (14)

Ja tā ir tikai apakšvirkņu meklēšana, varat izmantot string.find("substring").

Tomēr ir jābūt nedaudz uzmanīgam ar `find, index un in, jo tās ir apakšvirkņu meklēšanas. Citiem vārdiem sakot, šis:

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

Tas izdrukātu Radīts 'ir' rindā. Līdzīgi Ja "ir" s: būtu True. Tas var būt vai nebūt tas, ko jūs vēlaties.

Komentāri (8)

Ja adata siena kaudzē: ir normāls lietojums, kā saka @Michael - tas balstās uz operatoru in, kas ir lasāmāks un ātrāks nekā metodes izsaukums.

Ja operatoru vietā patiešām ir vajadzīga metode (piemēram, lai veiktu kādu dīvainu key= ļoti savdabīgai šķirai...?), tad tā būtu `{39;haystack'.__contains__. Bet, tā kā tavs piemērs ir paredzēts lietošanai if, domāju, ka tu nemaz nedomā to, ko saki;-). Nav ne laba forma (ne lasāmība, ne efektivitāte) izmantot īpašās metodes tieši - tās ir jāizmanto, izmantojot operatorus un iebūvētos elementus, kas tos deleģē.

Komentāri (0)