Indexar y segmentar strings en Python 3

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))

El resultado es:

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 caracteres específicos de una cadena de texto.

Número de índice negativo

A diferencia del positivo vamos a poder contar hacia atrás, 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.

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 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]

Por lo que nos va a imprimir:

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 este ejemplo con «Star Wars»:

c = "Star Wars"
print(c[:9:4]) # Añadimos una zancada hasta el 4 carácter

Salida: Star Wars

# 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 quieres segmentarlo:

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

Lo que vamos a hacer ahora es imprimir todo el string «Star Wars» menos el índice 0 (S) y el 8 (s):

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

Donde el índice a[1] es t, cuenta desde a[2] hasta el final del string -1, que es la r.

Ejemplo práctico:

No quiero finalizar este artículo sin dejarte un ejemplo del que podrás sacarle partido para practicar, e ir desarrollando cada vez más 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

¿Te ha parecido útil?