W3docs

Python Strings: Guía Completa

Aprende Python strings desde cero: creación, indexación, slicing, f-strings, métodos integrados y errores comunes con ejemplos ejecutables.

Los strings son uno de los tipos de datos más utilizados en Python. Cada vez que tu programa lee un archivo, muestra un mensaje o analiza una entrada, trabaja con strings. Este capítulo explica cómo crear strings, indexarlos y hacer slicing, usar métodos integrados y evitar errores comunes.

¿Qué es un string en Python?

Un string es una secuencia ordenada e inmutable de caracteres Unicode. "Inmutable" significa que nunca puedes cambiar un carácter en su lugar — toda operación que parezca modificar un string en realidad crea uno nuevo. Los strings pueden contener letras, dígitos, puntuación, espacios en blanco o cualquier carácter Unicode (incluyendo emojis).

greeting = "Hello, world!"
print(type(greeting))  # <class 'str'>
print(len(greeting))   # 13

Creación de strings

Python acepta tres estilos de comillas, que son todos equivalentes:

single = 'Python'
double = "Python"
triple = """Python"""   # triple-double also works as '''Python'''

Comillas simples y dobles

Usa el estilo que evite escapar el carácter de comilla dentro del string:

message1 = "It's a great day"   # apostrophe is fine inside double quotes
message2 = 'She said "hello"'   # double quote is fine inside single quotes

Strings con comillas triples (multilínea)

Las comillas triples permiten que un string abarque varias líneas sin necesidad de secuencias de escape:

poem = """Roses are red,
Violets are blue,
Python is awesome,
And so are you."""
print(poem)

Salida:

Roses are red,
Violets are blue,
Python is awesome,
And so are you.

Los strings con comillas triples son también la forma convencional de escribir docstrings — los bloques de documentación que aparecen al inicio de funciones, clases y módulos.

Convertir otros tipos a strings

Usa la función integrada str() para convertir cualquier objeto a su representación en string:

num = 42
pi  = 3.14
flag = True

print(str(num))   # '42'
print(str(pi))    # '3.14'
print(str(flag))  # 'True'

Indexación de caracteres

Python usa indexación basada en cero: el primer carácter está en el índice 0. También puedes usar índices negativos-1 hace referencia al último carácter, -2 al penúltimo, y así sucesivamente.

python— editable, runs on the server

Acceder a un índice fuera del rango válido genera un IndexError.

Slicing de strings

Un slice extrae una porción de un string usando la sintaxis s[start:stop:step].

ParteSignificadoValor por defecto
startÍndice del primer carácter a incluir0
stopÍndice del primer carácter a excluirlen(s)
stepCuántos caracteres avanzar cada vez1
s = "Hello, World!"

print(s[0:5])    # Hello     — characters at indexes 0–4
print(s[7:])     # World!    — from index 7 to the end
print(s[:5])     # Hello     — from the start to index 4
print(s[-6:])    # World!    — last 6 characters
print(s[::2])    # Hlo ol!   — every other character
print(s[::-1])   # !dlroW ,olleH  — reversed string

Para un análisis más detallado de la sintaxis de slicing, consulta el capítulo Slicing Strings.

Concatenación y repetición de strings

El operador + une dos strings; el operador * repite un string un número determinado de veces.

python— editable, runs on the server

Para concatenaciones a gran escala dentro de un bucle, usa str.join() en lugar de + — es significativamente más rápido porque evita crear objetos string intermedios:

words = ["one", "two", "three"]
result = ", ".join(words)
print(result)   # one, two, three

Repetición de strings

python— editable, runs on the server

Los operadores in y not in

Comprueba si una subcadena existe dentro de un string con in o not in:

text = "The quick brown fox"
print("quick" in text)      # True
print("slow"  in text)      # False
print("slow"  not in text)  # True

Longitud de un string

len() devuelve el número de caracteres en un string:

s = "Python"
print(len(s))   # 6

empty = ""
print(len(empty))   # 0

Caracteres de escape

Algunos caracteres no se pueden escribir literalmente dentro de un string. Python usa una barra invertida \ para introducir secuencias de escape:

SecuenciaCarácter
\nNueva línea
\tTabulación
\\Barra invertida literal
\'Comilla simple
\"Comilla doble
\rRetorno de carro
print("Line one\nLine two")
# Line one
# Line two

print("Name:\tAlice")
# Name:	Alice

path = "C:\\Users\\Alice"
print(path)   # C:\Users\Alice

Para desactivar el procesamiento de escapes por completo, prefija el string con r para crear un raw string — útil para expresiones regulares y rutas de Windows:

pattern = r"\d+\.\d+"   # treated literally, no escaping needed
print(pattern)           # \d+\.\d+

Consulta el capítulo Escape Characters para ver la lista completa.

Formato de strings

Python ofrece varias formas de incorporar valores de variables dentro de strings.

f-strings (recomendado — Python 3.6+)

Un f-string se prefija con f o F. Las expresiones dentro de {} se evalúan en tiempo de ejecución:

name = "Alice"
age  = 30
print(f"My name is {name} and I am {age} years old.")
# My name is Alice and I am 30 years old.

# Expressions work too
print(f"Next year I'll be {age + 1}.")   # Next year I'll be 31.

Método str.format()

python— editable, runs on the server

Formato con porcentaje (%) (heredado)

El código Python más antiguo usa el formato %. Aún puedes encontrarlo, pero los f-strings son la preferencia moderna:

print("Hello, %s!" % "Dave")   # Hello, Dave!
print("Pi ≈ %.2f" % 3.14159)   # Pi ≈ 3.14

Para un desglose completo de las opciones de formato, consulta los capítulos String Formatting y f-Strings.

Métodos de string más comunes

El tipo str de Python incluye docenas de métodos integrados. A continuación se muestran los más utilizados.

Conversión de mayúsculas y minúsculas

s = "Hello, World!"
print(s.upper())       # HELLO, WORLD!
print(s.lower())       # hello, world!
print(s.capitalize())  # Hello, world!
print(s.title())       # Hello, World!
print(s.swapcase())    # hELLO, wORLD!

Búsqueda y conteo

s = "hello, world"
print(s.find("o"))       # 4   — index of first 'o', or -1 if not found
print(s.rfind("o"))      # 8   — index of last 'o'
print(s.count("l"))      # 3   — total occurrences of 'l'
print(s.startswith("he")) # True
print(s.endswith("ld"))   # True

Reemplazar subcadenas

s = "I like cats. Cats are great."
print(s.replace("cats", "dogs"))
# I like dogs. Cats are great.   (only lowercase 'cats' replaced)

print(s.replace("cats", "dogs").replace("Cats", "Dogs"))
# I like dogs. Dogs are great.

Eliminar espacios en blanco

padded = "  hello  "
print(padded.strip())    # 'hello'   — both ends
print(padded.lstrip())   # 'hello  ' — left end only
print(padded.rstrip())   # '  hello' — right end only

División y unión

csv = "apple,banana,cherry"
items = csv.split(",")
print(items)   # ['apple', 'banana', 'cherry']

print(" | ".join(items))   # apple | banana | cherry

Verificar el contenido de un string

python— editable, runs on the server

Para la referencia completa, consulta el capítulo String Methods.

Inmutabilidad de los strings — Un error común

Los strings no se pueden modificar en su lugar. Intentar asignar a un índice genera un TypeError:

s = "hello"
# s[0] = "H"   # TypeError: 'str' object does not support item assignment

Para cambiar una parte de un string, construye uno nuevo:

s = "hello"
s = "H" + s[1:]   # slice off everything after index 0 and prepend "H"
print(s)           # Hello

La variable s ahora apunta a un objeto string diferente — el "hello" original permanece sin cambios (y será recolectado por el recolector de basura si nada más lo referencia).

Strings vs. bytes

Un string de Python (str) contiene texto Unicode. Cuando necesitas datos binarios sin procesar — por ejemplo, para escribir en un archivo en modo binario o enviar datos por una red — usa bytes en su lugar:

b = b"hello"          # bytes literal
s = b.decode("utf-8") # bytes → str
b2 = s.encode("utf-8") # str → bytes
print(type(b))   # <class 'bytes'>
print(type(s))   # <class 'str'>

Práctica

Práctica
In Python, which of the following are valid ways for declaring a string?
In Python, which of the following are valid ways for declaring a string?
Was this page helpful?