¿Tiene Python un método de subcadena de cadena 'contains'?

Estoy buscando un método string.contains o string.indexof en Python.

Quiero hacer:

if not somestring.contains("blah"):
   continue
Solución

Puede utilizar el operador in:

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

Si sólo se trata de una búsqueda de subcadenas, puede utilizar string.find("substring").

Sin embargo, hay que tener un poco de cuidado con find, index y in, ya que son búsquedas de subcadenas. En otras palabras, esto:

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

Imprimiría Found 'is' in the string. De forma similar, if "is" in s: se evaluaría a True. Esto puede o no ser lo que usted quiere.

Comentarios (8)

si aguja en pajar: es el uso normal, como dice @Michael -- se basa en el operador in, más legible y rápido que una llamada a un método.

Si realmente necesitas un método en lugar de un operador (por ejemplo, para hacer alguna extraña clave= para una clase muy peculiar...), sería 'pajar'.__contiene__. Pero como tu ejemplo es para usarlo en un if, supongo que no quieres decir realmente lo que dices;-). No es una buena forma (ni legible, ni eficiente) usar métodos especiales directamente -- están destinados a ser usados, en cambio, a través de los operadores y builtins que delegan en ellos.

Comentarios (0)