W3docs

Métodos de string en Python

Domina los métodos de string en Python: strip, split, join, replace, find, upper, lower y más — con ejemplos ejecutables y cuándo usar cada uno.

Los strings en Python cuentan con un amplio conjunto de métodos integrados que cubren casi todas las manipulaciones que necesitarás: recortar espacios en blanco, buscar, dividir, unir, verificar contenido y formatear. Dado que los strings son inmutables, cada método devuelve un nuevo string (u otro valor) en lugar de modificar el original.

Este capítulo cubre los métodos de string más importantes agrupados por propósito, con ejemplos y errores comunes. Para conocer cómo se crean e indexan los strings, consulta el capítulo Python Strings. Para la sintaxis de slicing, consulta Slicing Strings.

Conversión de mayúsculas y minúsculas

upper() y lower()

upper() devuelve una copia del string con todas las letras convertidas a mayúsculas; lower() hace lo contrario.

python— editable, runs on the server

Estos métodos no tienen en cuenta la configuración regional para letras ASCII. Para un manejo correcto según la configuración regional (p. ej., la I con punto turca), usa el módulo locale o bibliotecas de terceros.

title() y capitalize()

title() pone en mayúscula la primera letra de cada palabra. capitalize() pone en mayúscula solo el primer carácter del string completo y convierte todo lo demás a minúsculas.

s = "hello world"
print(s.title())       # Hello World
print(s.capitalize())  # Hello world

Advertencia: title() trata cualquier carácter que no sea una letra como límite de palabra, por lo que "it's" se convierte en "It'S". Usa la función string.capwords() de la biblioteca estándar cuando necesites una detección de palabras más inteligente.

swapcase()

Invierte las mayúsculas y minúsculas de cada carácter: las mayúsculas se convierten en minúsculas y viceversa.

print("Hello World".swapcase())  # hELLO wORLD

Espacios en blanco y relleno

strip(), lstrip() y rstrip()

Estos métodos eliminan los caracteres iniciales y/o finales (espacios en blanco por defecto).

s = "  Hello World  "
print(s.strip())   # "Hello World"
print(s.lstrip())  # "Hello World  "
print(s.rstrip())  # "  Hello World"

Puedes pasar un string de caracteres para eliminar — no un prefijo/sufijo, sino cualquier combinación de esos caracteres:

print("***hello***".strip("*"))   # hello
print("xyzhelloyz".strip("xyz"))  # hello

center(), ljust() y rjust()

Rellena un string hasta un ancho determinado. Un carácter de relleno opcional (por defecto: espacio) ocupa el espacio adicional.

print("hi".center(10))       # "    hi    "
print("hi".ljust(10, "-"))   # "hi--------"
print("hi".rjust(10, "-"))   # "--------hi"

Estos métodos son útiles para construir tablas de texto de ancho fijo.

zfill()

Rellena un string numérico con ceros iniciales para alcanzar un ancho determinado. Respeta un signo + o - al inicio.

print("42".zfill(5))    # 00042
print("-7".zfill(5))    # -0007

Búsqueda y conteo

find() y rfind()

find(sub) devuelve el índice más bajo donde se encuentra sub, o -1 si no se encuentra. rfind(sub) encuentra el índice más alto (el más a la derecha).

s = "Hello World"
print(s.find("World"))    # 6
print(s.find("xyz"))      # -1
print(s.rfind("l"))       # 9

Ambos aceptan argumentos opcionales start y end para limitar el rango de búsqueda.

index() y rindex()

Funcionan exactamente igual que find() y rfind(), pero lanzan ValueError en lugar de devolver -1 cuando no se encuentra la subcadena. Usa find() cuando la ausencia sea un caso normal; usa index() cuando la ausencia indique que algo salió mal.

s = "Hello World"
print(s.index("World"))   # 6
# s.index("xyz")          # raises ValueError

count()

Devuelve el número de ocurrencias no superpuestas de una subcadena.

print("banana".count("a"))     # 3
print("banana".count("an"))    # 2
print("aaaa".count("aa"))      # 2  (non-overlapping)

startswith() y endswith()

Devuelven True si el string comienza o termina con el prefijo/sufijo dado. Ambos aceptan una tupla de strings para verificar varias opciones a la vez.

filename = "report.pdf"
print(filename.startswith("report"))         # True
print(filename.endswith(".pdf"))             # True
print(filename.endswith((".pdf", ".docx")))  # True

Esto suele ser más legible que el slicing: filename[-4:] == ".pdf".

Reemplazar y dividir

replace(old, new, count=-1)

Devuelve una copia con cada ocurrencia de old reemplazada por new. Pasa un entero como tercer argumento para limitar el número de reemplazos.

python— editable, runs on the server

replace() realiza una coincidencia literal exacta; para el reemplazo basado en patrones, usa la función re.sub() del capítulo Python Regex.

split(sep=None, maxsplit=-1)

Divide el string en sep y devuelve una lista. Cuando se omite sep (o es None), divide en cualquier espacio en blanco y descarta los strings vacíos — ideal para tokenizar la entrada del usuario.

python— editable, runs on the server

split() siempre devuelve una lista, incluso cuando el delimitador está ausente (la lista contiene solo el string original).

rsplit(sep=None, maxsplit=-1)

Como split(), pero empieza desde la derecha. Es útil cuando solo quieres las últimas partes de un string.

path = "/home/user/documents/file.txt"
print(path.rsplit("/", 1))  # ['/home/user/documents', 'file.txt']

splitlines()

Divide en los límites de línea (\n, \r\n, \r y otros) y opcionalmente conserva los finales de línea.

text = "line one\nline two\r\nline three"
print(text.splitlines())  # ['line one', 'line two', 'line three']

join(iterable)

Lo contrario de split(). Concatena cada elemento de un iterable, colocando el string sobre el que se llama entre cada elemento. Esta es la forma recomendada de construir un string a partir de una lista porque Python lo construye en un solo paso.

print(", ".join(["apples", "bananas", "cherries"]))
# apples, bananas, cherries

print("".join(["P", "y", "t", "h", "o", "n"]))
# Python

Para más detalles, consulta el capítulo Concatenate Strings.

Verificación de contenido

Estos métodos devuelven True o False y son útiles para la validación de entradas.

MétodoDevuelve True cuando…
isalpha()Todos los caracteres son letras
isdigit()Todos los caracteres son dígitos (0–9)
isnumeric()Todos los caracteres son numéricos (incluye ², ½, etc.)
isalnum()Todos los caracteres son letras o dígitos
isspace()Todos los caracteres son espacios en blanco
islower()Todos los caracteres con casing están en minúsculas
isupper()Todos los caracteres con casing están en mayúsculas
istitle()El string está en formato de título
print("Python".isalpha())   # True
print("12345".isdigit())    # True
print("abc123".isalnum())   # True
print("   ".isspace())      # True
print("Hello World".istitle())  # True

Nota: Un string vacío devuelve False para todos estos métodos.

Longitud

len() es una función integrada, no un método de string, pero es fundamental para trabajar con strings.

python— editable, runs on the server

Los strings tienen índice cero, por lo que los índices válidos van de 0 a len(s) - 1.

Concatenación

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

python— editable, runs on the server

Para unir muchos strings o construir strings en un bucle, "".join(list) es significativamente más rápido que usar + en un bucle. Consulta Concatenate Strings para una comparación de rendimiento.

Formateo

format() y f-strings

str.format() inserta valores en los marcadores de posición {}. Las f-strings (Python 3.6+) hacen lo mismo de forma más concisa y son ahora el estilo preferido.

name = "Alice"
score = 95

# str.format()
print("Hello, {}! Your score is {}.".format(name, score))

# f-string (preferred)
print(f"Hello, {name}! Your score is {score}.")
# Hello, Alice! Your score is 95.

Ambos admiten especificadores de formato. Para la sintaxis completa, consulta Python String Formatting.

encode()

Convierte el string en un objeto bytes usando la codificación dada (por defecto utf-8).

s = "café"
print(s.encode("utf-8"))   # b'caf\xc3\xa9'
print(s.encode("ascii", errors="replace"))  # b'caf?'

Referencia rápida

MétodoQué hace
s.upper()Todo en mayúsculas
s.lower()Todo en minúsculas
s.title()Formato de título (cada palabra)
s.capitalize()Primer carácter en mayúscula
s.swapcase()Invertir mayúsculas/minúsculas
s.strip(chars)Eliminar caracteres iniciales/finales
s.lstrip(chars)Eliminar caracteres iniciales
s.rstrip(chars)Eliminar caracteres finales
s.center(w, fill)Centrar en un campo de ancho w
s.ljust(w, fill)Alinear a la izquierda en un campo de ancho w
s.rjust(w, fill)Alinear a la derecha en un campo de ancho w
s.zfill(w)Rellenar con ceros iniciales
s.find(sub)Índice más bajo de sub, o -1
s.rfind(sub)Índice más alto de sub, o -1
s.index(sub)Como find() pero lanza ValueError
s.count(sub)Contar ocurrencias no superpuestas
s.startswith(prefix)True si el string comienza con el prefijo
s.endswith(suffix)True si el string termina con el sufijo
s.replace(old, new)Reemplazar ocurrencias
s.split(sep)Dividir en lista
s.rsplit(sep)Dividir desde la derecha
s.splitlines()Dividir en finales de línea
sep.join(iterable)Unir iterable con separador
s.isalpha()¿Todas letras?
s.isdigit()¿Todos dígitos?
s.isalnum()¿Todas letras o dígitos?
s.isspace()¿Todo espacio en blanco?
s.format(...)Formatear con marcadores de posición
s.encode(enc)Codificar a bytes

Práctica

Práctica
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Which of the following Python string methods return -1 when the substring is not found (instead of raising an error)?
Was this page helpful?