Indexar y segmentar strings en Python 3

Python

En este artículo vamos a aprender a indexar y segmentar strings en Python 3, como también veremos unos ejemplos que te van a ser de mucha utilidad.

Los tipos de datos string (cadena) en Python son secuencias formadas por uno o varios caracteres que pueden ser letras, números, símbolos o espacios en blanco, lo cual se pueden segmentar y acceder a ellos mediante la indexación de los mismos.

Cómo indexar strings

Cada uno de los caracteres de un string corresponden a un número de índice, cuyo valor comienza por el (0). Para que lo visualices mejor, mira el siguiente ejemplo donde desglosamos el string Star Wars

S t a r W a r s
0 1 2 3 4 5 6 7 8

Como ves el índice (0) corresponde al carácter S y así sucesivamente, al igual que el espacio en blanco al que le corresponde el índice (4). Este hecho nos permite acceder y manipular a las cadenas de la misma forma que se puede hacer con otro tipo de datos secuenciales, por ejemplo los de una lista.

Número de índice positivo

Cuando nos referimos a un número de índice positivo quiere decir que la secuencia será hacia delante y no hacia atrás. La sintaxis es la siguiente:

c = "Star Wars"
print(c[2]) 
# Salida
a

También podemos darle un formato más visual a nuestro código:

c = "Star Wars"
s = c[2]
print("Extraemos el índice 2 de {} que es: {}".format(c, s))
# Salida
Extraemos el índice 2 de Star Wars que es: a
# Hemos contado desde S[0],t[1],a[2]

En este ejemplo hemos podido ver como Python te permite acceder a un índice específico y así, imprimir los caracteres que queramos de un string.

Número de índice negativo

A diferencia del índice positivo, este nos deja contar en números negativos, es decir, si queremos localizar un elemento al final de una cadena y esta a su vez es larga, en vez de empezar por el (0), lo haremos en el índice (-1) y así sucesivamente.

Vamos a utilizar el ejemplo anterior para ver su aspecto:

S t a r W a r s
-9 -8 -7 -6 -5 -4 -3 -2 -1

Vamos a imprimir el carácter W que se encuentra en el índice (-4) con la siguiente sintaxis:

c = "Star Wars"
print(c[-4])
# Salida
W

Segmentación de cadenas

Cabe resaltar que cuando segmentamos cadenas, lo que hacemos es crear subcadenas, es decir un substring. Este tipo de subcadenas se crean de las cadenas originales.

En el siguiente ejemplo localizaremos un segmento de la cadena desde el índice (0) hasta el (4) y lo imprimimos:

c = "Star Wars"
print(c[:4]) # Sería lo mismo que [0:4]
# Salida
Star

Funcionamiento de stride o zancada

Python permite un tercer parámetro dentro de la segmentación que es la zancada que por defecto, es de (1). Esto hace referencia a la cantidad de caracteres que se deben de seguir después de haber recuperado el primer carácter.

Veamos un ejemplo con la palabra «Star Wars»:

c = "Star Wars"
print(c[:9:4]) # Añadimos una zancada hasta el 4 carácter
# Salida - salta del 0 al 4 y luego al 8
S s 

Por lo tanto, cada zancada tomará el carácter entre dos números de índice en el caso que sea de (1) y así sucesivamente. En el caso de que omitamos utilizar este tercer parámetro como ya comente, Python por defecto lo hará de (1).

El método len

El método len() obtiene la longitud de cualquier tipo de dato de una secuencia estructurada o desestructurada, también de listas, strings, tuplas y diccionarios.

Imagínate que quieres saber la longitud exacta de un tipo de dato que posteriormente necesitas segmentar por partes:

a = "Star Wars"
print(len(a))
# Salida
9

Lo que vamos a hacer ahora es imprimir la palabra Star Wars menos el índice 0, que es la S mayúscula y el 8, que es la s minúscula:

a = "Star Wars"
print(a[1] + a[2:len(a) -1])
# Salida
tar War

El resultado es que hemos accedido al índice 1 donde está la S y luego, empieza a contar desde el índice a[2] que es la t, hasta el final del string donde se encuentra la r, sin mostrar el último carácter.

Te preguntarás del por qué, si he puesto -1 que es el último carácter de la palabra Wars, no sale la letra s. No sé si te has fijado de que estoy utilizando la función len() y esta me devuelve la longitud del string, por lo que si le resto -1 a esta longitud, no accede al último carácter y he ahí la respuesta.

Ejemplo práctico

No quiero finalizar este artículo sin dejarte un ejemplo práctico en el que uses la lógica y así, ir desarrollando cada vez más un código funcional.

Para ello utilizaré la legendaria frase «Que la fuerza te acompañe» y crearemos un substring de la palabra «fuerza»:

c = "Que la fuerza te acompañe"
# Buscamos el índice del primer carácter de fuerza (45)
ini = c.find("fuerza")
# Contamos desde ini hasta el último carácter
fin = ini + len("fuerza")
# Almacenamos de la variable c desde ini hasta fin
s_sub = c[ini:fin]
print(s_sub)
# Salida
fuerza

Conclusión

En este artículo has aprendido a indexar y segmentar strings en Python 3, como también hemos visto varios ejemplos de los que te van a ser de mucha utilidad.

Sigue el tutorial

Tipo booleano en Python 3

NEWSLETTER

Suscribirte a Exploradata.com es recibir en tu bandeja de entrada los últimos artículos y novedades del blog, para que no te pierdas nada.