str python – Strings en Python: El tipo str y operaciones más comunes

str python - Strings en Python

En el tutorial sobre tipos de datos básicos ya indiqué que el tipo str en Python se utilizaba para representar cadenas de caracteres.

En este tutorial describiré en detalle la clase str y descubrirás las principales operaciones que se pueden realizar sobre un string en Python.

Índice

Qué es el tipo str en Python

La clase str en Python se utiliza para representar texto, más conocido en el mundo de la programación como string o cadena de caracteres.

Poniéndome un poco más técnico, el tipo str es una secuencia inmutable de caracteres Unicode. Por tanto, al igual que list, tuple o range, es un tipo secuencial y como es inmutable, un objeto de este tipo no se puede modificar después de haber sido creado.

❗️ IMPORTANTE: Cuidado cuando trabajes con texto procedente de ficheros u otras fuentes de datos. Fíjate en qué codificación está y haz las transformaciones necesarias si no quieres tener problemas. Por defecto, la codificación de un string en Python es Unicode, concretamente UTF-8.

Cómo crear una cadena en Python

Crear una cadena de texto en Python es muy sencillo. Simplemente encierra una secuencia de caracteres entre comillas simples '' o dobles "".

>>> s = 'Hola Pythonista'
>>> s
'Hola Pythonista'
>>> type(s)
<class 'str'>

>>> s2 = "Me gusta Python"
>>> s2
'Me gusta Python'
>>> type(s2)
<class 'str'>

Si quieres o necesitas que un string ocupe más de una línea, entonces debes encerrar el texto entre tres comillas simples '''...''' o dobles """...""".

>>> s = '''
... Este string
...    ocupa más
...     de
...  una línea'''

>>> s
'\nEste string\n   ocupa más\n    de\n una línea'

>>> print(s)

Este string
   ocupa más
    de
 una línea

Como puedes observar, el uso de las tres comillas (simples o dobles) guarda el carácter de fin de línea. Esto se puede evitar añadiendo el carácter \ al final de cada línea.

>>> s = '''Este string \
...    ocupa más \
...     de \
...  una línea'''

>>> s
'Este string    ocupa más     de  una línea'

>>> print(s)
Este string    ocupa más     de  una línea

❗️ OJO: No confundas un string multilínea con un docstring. Un docstring es un string multilínea que se utiliza para documentar un módulo, función, clase o método, entre otros.

Además, dos cadenas se pueden concatenar con el operador +, o incluso repetir, usando el operador *. El resultado en ambos casos es un nuevo string.

>>> hola = 'hola'
>>> s = hola + ' Pythonista'
>>> s
'hola Pythonista'

>>> s2 = hola * 3 + ' Pythonista'
>>> s2
'holaholahola Pythonista'

Y para terminar esta sección, simplemente resaltar que dos strings literales se pueden concatenar si aparecen juntos uno tras otro.

>>> s = 'Hola' ' Pythonista'
>>> s
'Hola Pythonista'

>>> s = ('Hola'
... ' Pythonista'
... ' ¿Te gusta Python?')
>>> s
'Hola Pythonista ¿Te gusta Python?'

Cómo acceder a los caracteres de una cadena en Python

Como el resto de tipos secuencia, podemos acceder a los caracteres de una cadena a través de un índice numérico. Un índice es un número entero que indica la posición de un carácter en la cadena. Siempre el primer carácter de la secuencia tiene como índice 0.

>>> s = 'Hola Pythonista'

# Primer carácter de la cadena
>>> s[0]
'H'

# Sexto carácter de la cadena
>>> s[5]
'P'

# Tercer carácter de la cadena
>>> s[2]
'l'

Si se intenta acceder a un índice que está fuera del rango del string, el intérprete lanzará la excepción IndexError. De igual modo, si se utiliza un índice que no es un número entero, se lanzará la excepción TypeError

>>> s = 'Hola Pythonista'

>>> s[30]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: string index out of range

>>> s[1.0]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: string indices must be integers

Los índices también puede ser negativos. En este caso, el índice -1 hace referencia al último carácter, -2 al penúltimo, y así, sucesivamente.

>>> s = 'Hola Pythonista'
>>> s[-1]
'a'
>>> s[-2]
't'

for str Python – Recorrer los caracteres de una cadena

En Python es posible recorrer todos los caracteres de una cadena usando la sentencia for. Para ello, lo más fácil es seguir la siguiente plantilla:

>>> saludo = 'Hola'
>>> for c in saludo:
...     print(c)
...     
H
o
l
a

Comprobar si un carácter está en una cadena en Python

Para comprobar si un carácter está contenido en una cadena, utiliza el operador de pertenencia in. Esto nos devolverá True si al menos hay una ocurrencia del carácter en el string o False en caso contrario.

>>> saludo = 'Hola'
>>> print('o' in saludo)
True
>>> print('p' in saludo)
False
>>> print('p' not in saludo)
True

Comprobar si dos strings son iguales en Python

En Python, para comparar si dos cadenas de caracteres son iguales, se utiliza el operador de igualdad ==. Dos strings son iguales si y solo si ambas cadenas contienen la misma secuencia de caracteres (se distingue entre mayúsculas y minúsculas).

>>> s1 = 'hola'
>>> s2 = 'hola'
>>> print(s1 == s2)
True

>>> s3 = 'Hola'
>>> print(s1 == s3)
False

Longitud (len) de una cadena en Python

Como con cualquier otro tipo contenedor o secuencia, para obtener la longitud de una cadena se debe utilizar la función de Python len(). A esta función se le pasa como argumento la cadena en cuestión y nos devolverá el número de caracteres que tiene.

>>> saludo = 'Hola'
>>> len(saludo)
4

Escapar caracteres de una cadena en Python

Como un string está limitado por los caracteres '' o "", ¿qué ocurre si necesito usar el carácter ' o " dentro de una cadena?

Lo más fácil si tienes que usar el carácter ' en tu cadena, es encerarla entre comillas dobles. Por el contrario, si necesitas usar " dentro del string, enciérralo entre comillas simples.

>>> s = 'Dijo: "Hola Pythonista"'
>>> print(s)
Dijo: "Hola Pythonista"

>>> s = "Dijo: 'Hola Pythonista'"
>>> print(s)
Dijo: 'Hola Pythonista'

También puedes usar la combinación \' para mostrar una comilla simple o \" para mostrar una comilla doble, independientemente de si la cadena está encerrada entre comillas simples o dobles.

>>> s = 'Dijo: \'Hola Pythonista\''
>>> print(s)
Dijo: 'Hola Pythonista'

>>> s = "Dijo: \"Hola Pythonista\""
>>> print(s)
Dijo: "Hola Pythonista"

Además del carácter ' y ", hay otros caracteres especiales que para ser usados dentro de una cadena necesitan ser «escapados» con el carácter \. Son, entre otros, los siguientes: tabulador (\t), barra invertida (\\), retroceso (\b), nueva línea (\n) o retorno de carro (\r).

# Ejemplo para declarar una ruta en Windows
>>> s = 'C:\\Users\\Documents\\'
>>> print(s)
C:\Users\Documents\

# Nueva línea más tabulador
>>> s = 'Hola\n\tPythonista'
>>> print(s)
Hola
	Pythonista

Raw strings

En relación con la sección anterior, puede haber ocasiones en que se quiera usar el carácter \ pero sin ser utilizado como carácter de escape. Para ello, se puede hacer uso de las raw strings. Una cadena de este tipo comienza anteponiendo el carácter r a las comillas (simples o dobles).

# Aquí, \n es interpretado como nueva línea
>>> s = 'C:\python\noticias'
>>> print(s)
C:\python
oticias

# En una raw string no se interpreta el carácter \
>>> s = r'C:\python\noticias'
>>> print(s)
C:\python\noticias

Representación de un objeto como cadena

Una singularidad de la clase str es que a su constructor se le puede pasar cualquier objeto. Al hacer esto, la función str() devuelve la representación en forma de cadena de caracteres del propio objeto (si se pasa un string devuelve el string en sí).

Normalmente, al llamar a la función str(objeto) lo que se hace internamente es llamar al método __str__() del objeto. Si este método no existe, entonces devuelve el resultado de invocar a repr(objeto).

Otras operaciones sobre cadenas en Python

Para finalizar este tutorial, te dejo en esta sección una recopilación de otras entradas del blog en las que se muestran más operaciones y utilidades con cadenas de caracteres:

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento