3.3.6 Operaciones con «strings»

3.3.6 Operaciones con «strings»

Combinar cadenas

Podemos combinar dos o más cadenas de texto utilizando el operador +:

3.3.6 Operaciones con «strings»

Repetir cadenas

Podemos repetir dos o más cadenas de texto utilizando el operador *:

3.3.6 Operaciones con «strings»

Obtener un carácter

Los «strings» están indexados y cada carácter tiene su propia posición. Para obtener un único carácter dentro de una cadena de texto es necesario especificar su índice dentro de corchetes […].

3.3.6 Operaciones con «strings»

Figura 8: Indexado de una cadena de texto Veamos algunos ejemplos de acceso a caracteres:

Veamos algunos ejemplos de acceso a caracteres:

3.3.6 Operaciones con «strings»

Truco: Nótese que existen tanto índices positivos como índices negativos para acceder a cada carácter de la cadena de texto. A priori puede parecer redundante, pero es muy útil en determinados casos.

En caso de que intentemos acceder a un índice que no existe, obtendremos un error por fuera de rango:

3.3.6 Operaciones con «strings»

Las cadenas de texto son tipos de datos inmutables. Es por ello que no podemos modificar un carácter directamente:

3.3.6 Operaciones con «strings»

Truco: Existen formas de modificar una cadena de texto que veremos más adelante, aunque realmente no estemos transformando el original sino creando un nuevo objeto con las modificaciones.

3.3.6 Operaciones con «strings»

Trocear una cadena

Es posible extraer «trozos» («rebanadas») de una cadena de texto2. Tenemos varias aproximaciones para ello:

[:] Extrae la secuencia entera desde el comienzo hasta el final. Es una especia de copia de toda la cadena de texto.

[start:] Extrae desde start hasta el final de la cadena.

[:end] Extrae desde el comienzo de la cadena hasta end menos 1.

[start:end] Extrae desde start hasta end menos 1.

[start:end:step] Extrae desde start hasta end menos 1 haciendo saltos de tamaño step.

Veamos la aplicación de cada uno de estos accesos a través de un ejemplo:

3.3.6 Operaciones con «strings»

Importante: El troceado siempre llega a una unidad menos del índice final que hayamos especificado. Sin embargo el comienzo sí coincide con el que hemos puesto.

Longitud de una cadena

Para obtener la longitud de una cadena podemos hacer uso de len(), una función común a prácticamente todos los tipos y estructuras de datos en Python:

3.3.6 Operaciones con «strings»

Pertenencia de un elemento

Si queremos comprobar que una determinada subcadena se encuentra en una cadena de texto utilizamos el operador in para ello. Se trata de una expresión que tiene como resultado un valor «booleano» verdadero o falso:

3.3.6 Operaciones con «strings»

Habría que prestar atención al caso en el que intentamos descubrir si una subcadena no está en la cadena de texto:

3.3.6 Operaciones con «strings»

Dividir una cadena

Una tarea muy común al trabajar con cadenas de texto es dividirlas por algún tipo de separador. En este sentido, Python nos ofrece la función split(), que debemos usar anteponiendo el «string» que queramos dividir:

3.3.6 Operaciones con «strings»

Nota: Si no se especifica un separador, split() usa por defecto cualquier secuencia de espacios en blanco, tabuladores y saltos de línea.

Aunque aún no lo hemos visto, lo que devuelve split() es una lista (otro tipo de datos en Python) donde cada elemento es una parte de la cadena de texto original:

3.3.6 Operaciones con «strings»

Ejercicio

Sabiendo que la longitud de una lista se calcula igual que la longitud de una cadena de texto, obtenga el número de palabras que contiene la siguiente cadena de texto:

3.3.6 Operaciones con «strings»

Existe una forma algo más avanzada de dividir una cadena a través del particionado. Para ello podemos valernos de la función partition() que proporciona Python.

Esta función toma un argumento como separador, y divide la cadena de texto en 3 partes: lo que queda a la izquiera del separador, el separador en sí mismo y lo que queda a la derecha del separador:

3.3.6 Operaciones con «strings»

Limpiar cadenas

Cuando leemos datos del usuario o de cualquier fuente externa de información, es bastante probable que se incluyan en esas cadenas de texto, caracteres de relleno aal comienzo y al final. Python nos ofrece la posibilidad de eliminar estos caracteres u otros que no nos interesen.

La función strip() se utiliza para eliminar caracteres del principio y del final de un «string». También existen variantes de esta función para aplicarla únicamente al comienzo o únicamente al final de la cadena de texto.

Supongamos que debemos procesar un fichero con números de serie de un determinado artículo. Cada línea contiene el valor que nos interesa pero se han «colado» ciertos caracteres de relleno que debemos limpiar:

3.3.6 Operaciones con «strings»

Nota: Si no se especifican los caracteres a eliminar, strip() usa por defecto cualquier combinación de espacios en blanco, saltos de línea \n y tabuladores \t.

A continuación vamos a hacer «limpieza» por la izquierda (comienzo) y por la derecha (final) utilizando la función lstrip() y rstrip() respectivamente:

3.3.6 Operaciones con «strings»

Como habíamos comentado, también existe la posibilidad de especificar los caracteres que queremos borrar:

3.3.6 Operaciones con «strings»

Importante: La función strip() no modifica la cadena que estamos usando (algo obvio porque los «strings» son inmutables) sino que devuelve una nueva cadena de texto con las modificaciones pertinentes.

Realizar búsquedas

Aunque hemos visto que la forma pitónica de saber si una subcadena se encuentra dentro de otra es a través del operador in, Python nos ofrece distintas alternativas para realizar búsquedas en cadenas de texto.

Vamos a partir de una variable que contiene un trozo de la canción Mediterráneo de Joan Manuel Serrat para ejemplificar las distintas opciones que tenemos:

3.3.6 Operaciones con «strings»

Comprobar si una cadena de texto empieza o termina por alguna subcadena:

3.3.6 Operaciones con «strings»

Encontrar la primera ocurrencia de alguna subcadena:

3.3.6 Operaciones con «strings»
Tanto find() como index() devuelven el índice de la primera ocurrencia de la subcadena que estemos buscando, pero se diferencian en su comportamiento cuando la subcadena buscada no existe:

3.3.6 Operaciones con «strings»

3.3.6 Operaciones con «strings»

Contabilizar el número de veces que aparece una subcadena:

3.3.6 Operaciones con «strings»
Ejercicio

Dada la siguiente letra, obtenga la misma pero sustituyendo la palabra voices por sounds:

3.3.6 Operaciones con «strings»

Utilice para ello únicamente búsqueda, concatenación y troceado de cadenas de texto.

Reemplazar elementos

Podemos usar la función replace() indicando la subcadena a reemplazar, la subcadena de reemplazo y cuántas instancias se deben reemplazar. Si no se especifica este último argumento, la sustitución se hará en todas las instancias encontradas:

3.3.6 Operaciones con «strings»

Mayúsculas y minúsculas

Python nos permite realizar variaciones en los caracteres de una cadena de texto para pasarlos a mayúsculas y/o minúsculas. Veamos las distintas opciones disponibles:

3.3.6 Operaciones con «strings»

Identificando caracteres

Hay veces que recibimos información textual de distintas fuentes de las que necesitamos identificar qué tipo de caracteres contienen. Para ello Python nos ofrece un grupo de funciones.

Veamos algunas de estas funciones:

Lista 8: Detectar si todos los caracteres son letras o números

3.3.6 Operaciones con «strings»

3.3.6 Operaciones con «strings»

Publicaciones Similares