4. Strings

En Python, no existe un dato que contenga un solo caracter ( como si existe en C++), en Python todo lo que está entre comillas simples ( '  ' ) o comillas dobles ( "  ") son considerados Arreglos o Matrices de Caracteres o texto.

Cuando hacemos referencia a Caracteres o Texto estamos hablando de los caracteres de la tabla ASCII.

La asignación de un string o arreglo de caracteres a una variable se realiza escribiendo el nombre de la variable seguido por un signo igual y la cadena:

Por ejemplo:
a = "Hello"
print(a)


 ¿Qué sucede al ejecuta el siguiente código?:

a = "Hello"
print(a)
print(type(a))




La ventaja de poder elegir entre comillas simples o dobles la encontramos cuando necesitemos anidar unas comillas dentro de otras. Observar el siguiente ejemplo:

 >>> print('Una de mis series favoritas era "La casa de la pradera".')

Una de mis series favoritas era "La casa de la pradera".

Esto lo hemos podido conseguir utilizando el par interior de comillas de tipo diferente a la que abre y cierra el string, de modo que Python no puede confundirse a la hora de delimitar el fin de la cadena.

Pero, ¿como haríamos si necesitáramos imprimir las propias comillas simples o dobles, con libertad, dentro de un string?

La solución pasa por utilizar “caracteres de escape”. Referenciamos las comillas simples y dobles precediéndolas de un backslash (\), de modo que Python ignore su significado habitual delimitando strings. El caracter \ se conoce con el nombre de secuencia de escape.

Para escribir una comilla simple, emplearíamos \’ y, para una doble, \”.

Por ejemplo:

>>> print('Una de mis canciones favoritas de Beatles es "Maxwell\'s silver hammer".')

Ver la salida del código y debatir con el compañero qué se logra poniendo la \ :


Existe un problema al escribir strings largos, y es que deben estar en la misma línea de código, pues Python interpretaría una pulsación de Enter como una nueva línea de código.

Si por cuestiones de comodidad, necesitamos “partir” nuestro código, continuando en una nueva línea física, pero que forme parte de la misma línea lógica, podemos hacerlo terminando la línea física con el carácter de escape \ y pulsando Enter a continuación.

Puede ver ésto en el siguiente ejemplo:

 Escribir el siguiente código:

Figura 1

ver  que al final de la línea 1 y 2  está el caracter \ . La salida sería:

Figura 2

Vemos que se refiere a "partir" el string en la edición pero NO en la salida al ejecutarse la línea.

Si eliminamos  la \ vemos en Spyder que la línea 13 se marca con otro color..

Figura 3

Probar la salida del código y debatir con el compañero qué se logra poniendo la \ :

Conclusión : el caracter \ se toma como un caracter de escape

Veamos opciones para asignar a una variable una cadena o string de varias líneas, hay dos alternativas.

Se propone al alumno tipear lo siguiente en Python.

Alternativa 1: podemos  utilizar tres comillas dobles:

Escribir el siguiente código:
Figura 4




Alternativa 2: También se podría lograr reemplazando las comillas dobles por simples.


 Escribir el siguiente código:

Figura 5



Vamos a seguir con el tema string o cadenas de caracteres, vamos a ver como se almacenan
Se pide al alumno tipear lo siguiente:


Figura 6

y observar cuál es la salida, interpretando cada línea.

Esto, representado gráficamente sería:

Figura 7

Conclusiones:

  1. Una Cadena está formada por elementos.
  2. Cada elemento tiene una posición que se conoce con el nombre de índice.
  3. El índice comienza en cero, cero es la primer posición.
  4. Si la cadena tiene N elementos el último índice será N-1
  5. Para acceder a cada elemento debo escribir el nombre de la cadena y entre [ ] el número del índice.

   Ver la salida del siguiente código y debatir con el compañero :

print(nombre[-1])   # ¿Qué caracter se obtiene?

Supongamos que deseo corregir la cadena o string nombre, ya que un nombre propio se escribe la primera con mayúsculas: Daniel.

El elemento a corregir sería nombre[0].

   Debatir que sucede si se escribe el siguiente código:

nombre[0]="D"

Escribir el siguiente código:

Figura 8

¿Qué hace la parte de código: nombre[1:6]?

¿Se puede alterar UN elemento de una cadena o string?
¿Se pueden alterar TODOS los elementos de una cadena o string?
¿Qué salida produce la última línea: print(type(nombre))?

Vamos comentar algunos de los métodos de las cadenas, haciendo referencia a la página de documentación de python:

Se deja al alumno la tarea para que realice los ejercicios de la siguiente página:  Ejercicios de cadenas.
En estos links se pueden ver ejemplos de algunos métodos :