7 formas de comprobar si una cadena de Python contiene una subcadena

Trabajar con cadenas es una tarea común en Python. A menudo necesita averiguar si una cadena contiene otra cadena.

Los métodos más simples para verificar si una cadena de Python contiene una subcadena incluyen el operador 'in', la función find() y el método index(). Los escenarios más complejos se pueden resolver con expresiones regulares o una biblioteca externa como Pandas.

Este artículo te muestra:

  • cuatro métodos simples

  • dos funciones regex más complejas

  • un método usando la biblioteca Pandas

Aprenderá cada técnica a través de ejemplos de su sintaxis y uso. También obtendrá sugerencias sobre qué método es mejor para diferentes requisitos.

¡Empecemos!

Tabla de contenido

Conceptos básicos de las cadenas de Python

Una cadena en Python es una secuencia de caracteres que se utiliza para representar datos basados ​​en texto. Pueden incluir letras, dígitos, símbolos y espacios en blanco.

Es uno de los tipos de datos incorporados de Python y se puede crear usando:

  • comillas simples (' ')

  • doble comillas (" ")

  • comillas triples (”' ”' o “”” “””)

Las cadenas están indexadas, lo que significa que puede acceder a caracteres específicos haciendo referencia a su número de índice. El índice inicial es 0, lo que significa que el primer carácter de una cadena tiene un índice de 0, el segundo tiene un índice de 1, y así sucesivamente.

A continuación, buscamos formas de verificar subcadenas.

Las 4 formas más sencillas de buscar subcadenas

Python proporciona muchas formas de verificar si existe una determinada subcadena dentro de una cadena más grande. Algunos son más complejos que otros. Para las comprobaciones más básicas, los métodos más simples son el operador in o uno de los tres métodos de cadena.

  1. en operador

  2. método buscar()

  3. método index()

  4. método contar()

7 formas de comprobar si una cadena de Python contiene una subcadena

1. En Operador

El operador 'in' en Python es una forma simple e intuitiva de comprobar si existe una cadena dentro de otra cadena. Este operador verifica la membresía y devuelve un valor booleano:

  • Verdadero si la subcadena se encuentra dentro de la cadena principal

  • falso si no lo es

Aquí hay un código de muestra:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

El operador 'in' distingue entre mayúsculas y minúsculas. Esto significa que trata los caracteres en minúsculas y mayúsculas como diferentes. El código anterior no encontrará la subcadena "hola", por lo que el operador devuelve falso.

Si desea realizar una verificación que no distinga entre mayúsculas y minúsculas, puede convertir tanto la cadena principal como la subcadena al mismo caso antes de realizar la verificación:

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

El inconveniente del operador in es que no proporciona la posición de la subcadena dentro de la cadena principal. Para eso, necesitaría otro método en esta sección. sigue leyendo…

2. Método Buscar()

El método find() devuelve el primer índice en el que aparece la subcadena, o -1 si no se encuentra la subcadena.

Llamas al método find() en una cadena s , pasando la subcadena sub como argumento. Aquí hay un ejemplo:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

Opcionalmente, puede especificar un índice inicial o final para limitar su búsqueda. El inconveniente de este método es que se detiene en la primera aparición.

3. Método Índice()

El método index() es bastante similar al método find() , excepto que genera un ValueError cuando no se encuentra la subcadena. Esto significa que debe envolver la llamada en una sección Try/Except.

Para usar el método index() , llámelo en una cadena s y pase la subcadena sub como argumento.

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

Este método también se detiene en la primera subcadena dentro del texto.

4. Método Contar()

El método .count() cuenta cuántas veces aparece una subcadena en la cadena original. Devuelve un número entero que representa este recuento. Si la subcadena no se encuentra en la cadena principal, devuelve 0.

Aquí hay un ejemplo simple que busca la letra "o" en el texto "¡Hola, mundo!":

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

2 formas de hacer coincidir cadenas con expresiones regulares

El uso de expresiones regulares (regex) es un poco más complejo que los métodos de la sección anterior. Sin embargo, le brindan más opciones para buscar y analizar el texto que está tratando.

Dos de las formas más fáciles dentro del módulo re son:

  1. buscar()

  2. encuentra todos()

7 formas de comprobar si una cadena de Python contiene una subcadena

1. volver a buscar()

La función search() en el módulo re busca un patrón en una cadena determinada y devuelve un objeto de coincidencia si se encuentra una coincidencia. De lo contrario, devuelve Ninguno .

De forma predeterminada, la función distingue entre mayúsculas y minúsculas. Puede usar el indicador re.IgnoreCase para evitar la distinción entre mayúsculas y minúsculas.

Aquí hay un ejemplo simple que usa declaraciones condicionales basadas en si se encuentra la cadena:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

Tenga en cuenta que este método encuentra la primera coincidencia y luego deja de buscar. Si desea encontrar todas las coincidencias, la siguiente en esta lista es para usted.

2. re.Buscar()

Este método encuentra todas las apariciones de un patrón de búsqueda en una cadena determinada y devuelve una lista que contiene todas las coincidencias.

Este ejemplo usa un patrón que coincide con uno o más dígitos en una cadena. La cadena de texto "123, 456, 789" contiene tres secuencias de dígitos.

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

Esta es la respuesta del código de muestra: ['123', '456', '789'].

Cómo encontrar subcadenas con pandas

7 formas de comprobar si una cadena de Python contiene una subcadena

Pandas es una popular biblioteca de manipulación y análisis de datos de código abierto para Python. Proporciona estructuras de datos y funciones necesarias para manipular y analizar datos estructurados.

Una de las principales estructuras de datos proporcionadas por Pandas es DataFrame. Puede usar esta estructura de datos versátil para buscar una cadena dentro de otra.

La ventaja de Pandas es que proporciona paquetes de código que tendría que escribir extensamente en otros lenguajes de programación. Específicamente, una gran cantidad de energía está empaquetada dentro de la función contiene.

Función str.contains() en Pandas

El método str.contains() prueba si un patrón específico o una expresión regular está contenido dentro de una cadena de una columna DataFrame.

Aquí hay un ejemplo que importa la biblioteca y busca una cadena dentro de una lista de cadenas:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

En este ejemplo, buscamos la subcadena 'an' en la columna 'frutas' y filtramos el marco de datos en consecuencia. La salida sería:

  • 1 plátano

  • 4 naranja

Si está buscando más ejemplos de lo que Pandas puede hacer, vea este video:

Consejos para elegir un método específico en Python

La elección del método depende en gran medida de los requisitos específicos de su tarea.

Aquí hay cuatro razones para elegir uno de los métodos que ha aprendido de este artículo, además de un método adicional que aprenderá en otra parte de este blog:

  1. Velocidad de procesamiento

  2. Necesita saber la ubicación de la subcadena

  3. Necesita saber el número de ocurrencias de la subcadena

  4. Quiere hacer coincidir patrones complejos

  5. Realización de análisis de texto

1. Velocidad de procesamiento

7 formas de comprobar si una cadena de Python contiene una subcadena

El operador 'in' es la mejor opción si simplemente desea saber si existe una subcadena dentro de una cadena.

Es simple, intuitivo y rápido para este propósito. Sin embargo, no proporciona información sobre la ubicación o el recuento de la subcadena.

2. Ubicación de la subcadena

Utilice los métodos .find() o .index() si necesita saber la posición de la primera aparición de una subcadena dentro de una cadena.

Ambos devuelven el índice de la primera aparición de la subcadena.

3. Recuento de subcadena

Utilice el método .count() cuando desee saber cuántas veces aparece una subcadena en una cadena.

4. Patrones complejos

Si necesita hacer coincidir patrones complejos o realizar búsquedas que no distinguen entre mayúsculas y minúsculas, las expresiones regulares son las más flexibles. La función re.search() puede manejar patrones más allá de simples subcadenas y puede realizar fácilmente búsquedas que no distinguen entre mayúsculas y minúsculas.

Sin embargo, las expresiones regulares pueden ser excesivas para las comprobaciones simples de subcadenas y también pueden ser más lentas y complejas de usar y mantener.

5. Realización de análisis de texto

Consulte nuestro artículo sobre análisis de texto en Python , que le muestra cómo trabajar con la biblioteca textblob.

Puede usar la función .tags para buscar partes del discurso o la función .ngram para encontrar palabras que aparecen juntas con frecuencia en un documento.

Pensamientos finales

Ha aprendido siete métodos para verificar si una palabra o un objeto de cadena está contenido en otro. Estos incluían operadores de membresía, funciones integradas, expresiones regulares y funciones de Pandas.

Cada método es correcto para algunas situaciones pero no para todas. Utilice este artículo como una hoja de trucos a medida que domina el lenguaje de programación Python y utiliza la mejor solución para su tarea de análisis de cadenas.

Recuerde, no existe un método único para todos. Cada enfoque tiene sus propias ventajas y peculiaridades, así que siéntase libre de elegir el que mejor se adapte a su estilo o al problema particular que está tratando de resolver. Al final del día, Python se trata de hacer tu vida más fácil, ¡así que aprovecha su flexibilidad!

Leave a Comment

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.