Je cherche une méthode string.contains
ou string.indexof
en Python.
Je veux le faire :
if not somestring.contains("blah"):
continue
Vous pouvez utiliser l'opérateur [in
][1] :
if "blah" not in somestring:
continue
[1] : https://docs.python.org/reference/expressions.html#membership-test-details
S'il s'agit juste d'une recherche de sous-chaîne, vous pouvez utiliser string.find("substring" ;)
.
Vous devez cependant être un peu plus prudent avec find
, index
et in
, car ce sont des recherches de sous-chaînes. En d'autres termes, ceci :
s = "This be a string"
if s.find("is") == -1:
print "No 'is' here!"
else:
print "Found 'is' in the string."
De même, " if "is" ; in s:serait évalué à
True`. Ce n'est pas forcément ce que vous voulez.
si une aiguille dans une botte de foin:
est l'utilisation normale, comme le dit @Michael -- elle s'appuie sur l'opérateur [in
][1], plus lisible et plus rapide qu'un appel de méthode.
Si vous avez vraiment besoin d'une méthode au lieu d'un opérateur (par exemple pour faire un key=
bizarre pour une sorte très particulière... ?), ce serait ['haystack' ;.__contains__
][2]. Mais comme votre exemple est destiné à être utilisé dans un if
, je suppose que vous ne pensez pas vraiment ce que vous dites ;-). Il n'est pas bon (ni lisible, ni efficace) d'utiliser directement les méthodes spéciales - elles doivent plutôt être utilisées par le biais des opérateurs et des modules intégrés qui leur sont délégués.
[1] : https://docs.python.org/reference/expressions.html#membership-test-details [2] : https://docs.python.org/reference/datamodel.html#object.__contains__