Má Python metódu na vytváranie reťazcov 'contains'?

Hľadám metódu string.contains alebo string.indexof v jazyku Python.

Chcem urobiť:

if not somestring.contains("blah"):
   continue
Riešenie

Môžete použiť operátor in:

if "blah" not in somestring: 
    continue
Komentáre (14)

Ak ide len o hľadanie podreťazca, môžete použiť string.find("substring").

Musíte však byť trochu opatrní pri vyhľadávaní pomocou find, index a in, pretože ide o vyhľadávanie v podreťazcoch. Inými slovami, toto:

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

Vypísalo by to Našlo sa 'is' v reťazci. Podobne if "is" v s: by sa vyhodnotilo ako Pravdivé. To môže, ale nemusí byť to, čo chcete.

Komentáre (8)

if needle in haystack: je normálne použitie, ako hovorí @Michael -- spolieha sa na operátor in, ktorý je čitateľnejší a rýchlejší ako volanie metódy.

Ak naozaj potrebujete metódu namiesto operátora (napr. urobiť nejaký podivný key= pre veľmi zvláštny druh...?), tak to bude 'haystack'.__contains__. Ale keďže tvoj príklad je určený na použitie v if, hádam to nemyslíš vážne;-). Nie je'to dobrá forma (ani čitateľná, ani efektívna) používať špeciálne metódy priamo -- namiesto toho sa majú používať prostredníctvom operátorov a buildtinov, ktoré ich delegujú.

Komentáre (0)