Har Python en string 'contains' substring-metode?

Jeg leder efter en string.contains eller string.indexof-metode i Python.

Jeg ønsker at gøre:

if not somestring.contains("blah"):
   continue
Løsning

Du kan bruge operatoren in:

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

Hvis det kun er en søgning efter en delstreng, kan du bruge string.find("substring").

Du skal dog være lidt forsigtig med find, index og in, da de er delstrengssøgninger. Med andre ord, dette:

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

Det ville udskrive Found 'is' in the string. Tilsvarende ville if "is" in s: evaluere til True. Dette er måske eller måske ikke det, du ønsker.

Kommentarer (8)

if needle in haystack: er den normale brug, som @Michael siger -- det er baseret på operatoren in, som er mere læsbar og hurtigere end et metodekald.

Hvis du virkelig har brug for en metode i stedet for en operatør (f.eks. for at lave en eller anden underlig key= for en meget mærkelig slags...?), ville det være 'haystack'.__contains__. Men da dit eksempel er til brug i et if, så tror jeg ikke du mener det du siger;-). Det er ikke god form (og heller ikke læsbart eller effektivt) at bruge specielle metoder direkte -- de skal i stedet bruges gennem de operatører og builtins der delegerer til dem.

Kommentarer (0)