Segmentación de cadenas
Aprende la segmentación de cadenas en Python con sintaxis, diagramas de índices, valores de paso, índices negativos y ejemplos prácticos del mundo real.
Segmentación de cadenas en Python
La segmentación de cadenas te permite extraer una subcadena de una cadena más larga especificando dónde empezar, dónde terminar y cuántos caracteres saltar cada vez. Es una de las operaciones de cadenas más comunes en Python y se utiliza en todas partes, desde el análisis de nombres de archivos hasta la inversión de palabras.
Este capítulo cubre:
- La sintaxis
[start:stop:step]y cómo los índices se mapean a caracteres - Omitir start o stop (segmentar desde el principio o hasta el final)
- Índices negativos (contando desde la derecha)
- El parámetro step (saltar caracteres, invertir una cadena)
- Errores comunes: índices fuera de rango, segmentos vacíos
- Ejemplos prácticos que puedes ejecutar de inmediato
Si eres nuevo con las cadenas en Python, lee primero el capítulo Python Strings — explica cómo se crean y se indexan las cadenas.
Cómo funcionan los índices de cadenas
Cada carácter en una cadena de Python tiene dos índices: uno positivo (contando desde la izquierda, comenzando en 0) y uno negativo (contando desde la derecha, comenzando en -1).
Para la cadena "Hello, World!":
H e l l o , W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12 ← positive
-13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 ← negativeLa sintaxis completa de segmentación es:
string[start:stop:step]start— índice del primer carácter a incluir (por defecto:0)stop— índice del primer carácter a excluir (por defecto: fin de la cadena)step— cuántos caracteres avanzar cada vez (por defecto:1)
El índice stop es exclusivo — el carácter en stop nunca se incluye en el resultado.
Segmentación básica de cadenas
Proporciona un índice de inicio y uno de fin separados por dos puntos para extraer los caracteres entre ellos.
my_string[0:3] devuelve los caracteres en las posiciones 0, 1 y 2 — el carácter en el índice 3 ('l') no se incluye.
Omitir el inicio o el fin
Omite start para comenzar desde el primer carácter, o omite stop para continuar hasta el último carácter.
my_string[:] es un idioma común para copiar una cadena (aunque las cadenas son inmutables en Python, por lo que simplemente devuelve el mismo valor).
Índices negativos
Los índices negativos cuentan hacia atrás desde el final de la cadena. -1 hace referencia al último carácter, -2 al penúltimo, y así sucesivamente.
Un patrón útil: my_string[-n:] siempre te da los últimos n caracteres, independientemente de la longitud de la cadena.
El parámetro step
El tercer argumento del segmento es el paso. Controla cuántas posiciones avanza Python después de cada carácter que selecciona.
Invertir una cadena
Establece el paso en -1 para iterar de derecha a izquierda. Esta es la forma idiomática de invertir una cadena en Python:
Puedes combinar un paso negativo con índices de inicio y fin. Recuerda: cuando el paso es negativo, start debe ser mayor que stop.
my_string = "Hello, World!"
print(my_string[10:2:-1]) # 'lroW ,ol' — from index 10 down to (not including) index 2Consulta el capítulo Reverse a String para más técnicas, incluyendo reversed() y ''.join().
Combinar start, stop y step
Las tres partes funcionan juntas. Piensa en el segmento como un bucle for que comienza en start, se detiene antes de stop e incrementa en step.
Índices fuera de rango
A diferencia del acceso directo por índice (que lanza un IndexError para un índice fuera de rango), la segmentación maneja los valores fuera de rango de forma segura ajustándolos a los límites de la cadena.
my_string = "Hello, World!"
# Stop index beyond the string length — no error
print(my_string[7:100]) # 'World!'
# Start index beyond the string length — returns empty string
print(my_string[50:60]) # ''
# Direct index access would raise IndexError:
# print(my_string[100]) # IndexError: string index out of rangeEsto hace que la segmentación sea segura para patrones del tipo "dame hasta N caracteres" sin necesidad de verificar len() primero.
Ejemplos prácticos
Extraer la extensión de un archivo
filename = "report.pdf"
extension = filename[-3:]
print(extension) # 'pdf'Extraer el dominio de una dirección de correo electrónico
email = "[email protected]"
at_index = email.index("@")
domain = email[at_index + 1:]
print(domain) # 'example.com'Truncar una cadena larga con puntos suspensivos
def truncate(text, max_length):
if len(text) <= max_length:
return text
return text[:max_length - 3] + "..."
print(truncate("Hello, World!", 8)) # 'Hello...'
print(truncate("Hi", 8)) # 'Hi'Verificar si una cadena es un palíndromo
word = "racecar"
is_palindrome = word == word[::-1]
print(is_palindrome) # TrueReferencia rápida
| Expresión | Significado |
|---|---|
s[a:b] | Caracteres desde el índice a hasta (sin incluir) b |
s[:b] | Desde el inicio hasta (sin incluir) b |
s[a:] | Desde el índice a hasta el final |
s[:] | Copia completa |
s[a:b:n] | Cada n-ésimo carácter desde a hasta b |
s[::-1] | Cadena invertida |
s[-n:] | Últimos n caracteres |
s[:-n] | Todo excepto los últimos n caracteres |
Qué leer a continuación
- Python Strings — creación de cadenas, indexación e inmutabilidad
- String Methods —
upper(),strip(),split(),replace()y más - Modify Strings — técnicas para transformar el contenido de cadenas
- Concatenate Strings — unir cadenas con
+yjoin() - Escape Characters —
\n,\t,\\y otras secuencias especiales - Format Strings — incrustando valores en cadenas con f-strings y
.format()