3599 votes

Python ont une chaîne de caractères contient la méthode?

Je suis à la recherche d'un string.contains ou string.indexof méthode en Python.

Je veux faire:

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

6121voto

Michael Mrozek Points 44120

Vous pouvez utiliser l' in opérateur:

if not "blah" in somestring: continue

Ou plus idiomatique:

if "blah" not in somestring: continue

643voto

eldarerathis Points 14545

Si c'est juste une sous-chaîne de recherche, vous pouvez utiliser string.find("substring")

Vous devez être un peu prudent avec find, index, et in même si, comme ils le sont sous-chaîne de recherche. 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."

Imprimez Found 'is' in the string. de Même, if "is" in s: permettrait d'évaluer à l' True. Cela peut ou peut ne pas être ce que vous voulez.

170voto

Alex Martelli Points 330805

if needle in haystack: est d'une utilisation normale, comme @Michael, dit -- elle s'appuie sur l' in de l'opérateur, 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 peu bizarres key= pour les très particulière de tri...?), que serait 'haystack'.__contains__. Mais depuis votre exemple est pour une utilisation dans un if, je suppose que vous n'avez pas vraiment signifie que vous dire;-). Ce n'est pas la bonne forme (ni lisible, ni efficace) à utiliser des moyens spéciaux directement, ils sont destinés à être utilisés, au lieu de cela, par l'intermédiaire des opérateurs et des fonctions internes telles que délégué pour.

70voto

Bohdan Points 1882

Non il n'y a pas d' string.contains(str)méthode mais n'est - in opérateur:

if substring in someString:
    print "It's there!!!"

Ici, c'est plus de travail complexes exemple:

# print all files with dot in home directory
import commands
(st, output) = commands.getstatusoutput('ls -a ~')
print [f for f in output.split('\n') if '.' in f ]

22voto

Harish Reddy Points 97

Une autre façon de trouver si la chaîne contient des caractères peu ou pas avec la valeur de retour Boolean (c - True ou `False)

str1 = "This be a string"
find_this = "tr"
if find_this in str1:
    print find_this, " is been found in ", str1
else:
    print find_this, " is not found in ", str1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X