Breaking

Post Top Ad

Your Ad Spot

jueves, 8 de agosto de 2019

¿Cómo verificar si una cadena de Python contiene otra cadena?

Una de las operaciones más comunes que usan los programadores en las cadenas es verificar si una cadena contiene alguna otra cadena.
Si viene a Python desde Java, es posible que haya utilizado el método contiene para verificar si existe alguna subcadena en alguna cadena.
En Python, hay dos formas de lograrlo.

Primero: Usando el operador in

La forma más sencilla es a través de la década de pitón deoperador.
Echemos un vistazo a este ejemplo.
>>> str = "Messi is the best soccer player"
>>> "soccer" in str
True
>>> "football" in str
False
Como puede ver, el operador in devuelve True cuando la subcadena existe en la cadena.
De lo contrario, devuelve falso.
Este método es muy sencillo, limpio, legible e idiomático.

Segundo: usando el método find

Otro método que puede usar es el método de búsqueda dela cadena .
A diferencia del operador in que se evalúa como un valor booleano, el método find devuelve un entero.
Este número entero es esencialmente el índice del comienzo de la subcadena si la subcadena existe, de lo contrario se devuelve -1.
Veamos el método find en acción.
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
Una cosa interesante de este método es que opcionalmente puede especificar un índice de inicio y un índice final para limitar su búsqueda.
Por ejemplo
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
Observe cómo se devolvió un -1 para "Messi" porque está limitando su búsqueda a la cadena entre los índices 5 y 25 solamente.

¿Eres programador?

Así que ya sabes cómo es la rutina diaria de un programador.
Obtenga esta divertida camiseta de Amazon y llévela con orgullo.
Disponible en los EE. UU. Con una amplia variedad de colores y tamaños.

Algunas cosas avanzadas

Suponga por un segundo que Python no tiene funciones o métodos integrados que verifiquen si una cadena contiene otra cadena.
¿Cómo escribirías una función para hacerlo?
Bueno, una manera fácil es la fuerza bruta comprobando si la subcadena existe a partir de cada posición posible en la cadena original.
Para cadenas más grandes, este proceso puede ser realmente lento.
Hay mejores algoritmos para la búsqueda de cadenas.
Recomiendo este artículo de TopCoder si desea obtener más información y profundizar en los algoritmos de búsqueda de cadenas .
Para una mayor cobertura de otros algoritmos de búsqueda de cadenas no cubiertos en el artículo anterior, esta página de wikipedia es excelente .
Si revisa los artículos anteriores y los estudia, su próxima pregunta sería "¿qué algoritmo usa realmente Python?"
Este tipo de preguntas casi siempre requieren profundizar en el código fuente.
Pero tienes suerte, porque la implementación de Python es de código abierto.
Muy bien, profundicemos en el código .

Perfecto, estoy feliz de que los desarrolladores hayan comentado su código 🙂
Ahora está muy claro que el método find utiliza una combinación de algoritmos boyer-moore y horspool .

Conclusión

Puede usar el operador in o el método find de la cadena para verificar si una cadena contiene otra cadena.
El operador in devuelve True si la subcadena existe en la cadena; de lo contrario, devuelve False.
El método find devuelve el índice del comienzo de la subcadena si se encuentra; de lo contrario, se devuelve -1.
La implementación de Python (CPython) utiliza una combinación de boyer-moore y horspool para la búsqueda de cadenas.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas