Home
» Power BI
»
7 formas de comprobar si una cadena de Python contiene una subcadena
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.
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.
en operador
método buscar()
método index()
método contar()
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:
buscar()
encuentra todos()
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
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:
Velocidad de procesamiento
Necesita saber la ubicación de la subcadena
Necesita saber el número de ocurrencias de la subcadena
Quiere hacer coincidir patrones complejos
Realización de análisis de texto
1. Velocidad de procesamiento
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!