W3docs

Modificar Strings

Aprende a modificar strings en Python con concatenación, segmentos, métodos de mayúsculas, replace, strip, split, join y más. Incluye ejemplos ejecutables.

Los strings de Python son secuencias de caracteres encerrados entre comillas. Aunque los strings son inmutables — no puedes modificarlos en el lugar — Python te ofrece un rico conjunto de operadores y métodos que devuelven strings nuevos y modificados. Este capítulo cubre las técnicas más importantes: concatenación, repetición, conversión de mayúsculas, segmentos, reemplazo de subcadenas, eliminación de espacios en blanco, división y unión, y más.

Concepto Clave: Los Strings Son Inmutables

Antes de continuar, es importante entender que cada método de "modificación" devuelve un nuevo string. El string original nunca cambia.

greeting = "hello"
upper_greeting = greeting.upper()

print(greeting)        # hello  (unchanged)
print(upper_greeting)  # HELLO  (new string)

Esto significa que debes asignar el resultado a una variable (o usarlo directamente) para conservar el cambio.

Concatenación de Strings

La concatenación combina dos o más strings en uno usando el operador +. Puedes encadenar tantos strings como necesites.

Concatenar strings en Python

python— editable, runs on the server

Concatenar con Variables y Literales

Puedes mezclar variables de tipo string con literales de string:

first_name = "Ada"
last_name  = "Lovelace"
full_name  = first_name + " " + last_name
print(full_name)  # Ada Lovelace

Para grandes cantidades de texto, considera usar format strings o f-strings, que son más fáciles de leer que largas cadenas de +.

Repetición de Strings

El operador * repite un string un número determinado de veces. Esto es útil para generar separadores, relleno o patrones simples.

Repetir un string en Python

python— editable, runs on the server

Cambio de Mayúsculas y Minúsculas

Python proporciona varios métodos para cambiar las mayúsculas y minúsculas de un string.

MétodoQué haceEjemplo de entrada → salida
upper()Todas las letras en mayúsculas"hello""HELLO"
lower()Todas las letras en minúsculas"HELLO""hello"
title()Primera letra de cada palabra en mayúscula"hello world""Hello World"
capitalize()Primera letra en mayúscula, el resto en minúsculas"hELLO""Hello"
swapcase()Intercambia mayúsculas↔minúsculas en cada letra"Hello""hELLO"

Convertir un string a mayúsculas o minúsculas en Python

python— editable, runs on the server

Los métodos de mayúsculas se usan comúnmente para comparar la entrada del usuario sin importar cómo fue escrita:

answer = input("Type yes or no: ")
if answer.lower() == "yes":
    print("You said yes!")

Segmentos de Strings

Los segmentos extraen parte de un string usando la sintaxis [start:stop:step]. El resultado es un nuevo string que contiene los caracteres desde el índice start hasta, pero sin incluir, el índice stop.

 H  e  l  l  o  ,     W  o  r  l  d  !
 0  1  2  3  4  5  6  7  8  9 10 11 12
-13-12-11-10-9 -8 -7 -6 -5 -4 -3 -2 -1

Extraer segmentos de strings en Python

python— editable, runs on the server

Cuándo Usar Índices Negativos

Los índices negativos cuentan desde el final del string. El índice -1 es el último carácter, -2 es el penúltimo, y así sucesivamente. Esto es útil cuando quieres el final de un string sin conocer su longitud:

filename = "report_2024.csv"
extension = filename[-3:]
print(extension)  # csv

Para un estudio en profundidad, consulta el capítulo Slicing Strings.

Reemplazar Subcadenas

El método replace(old, new) devuelve una copia del string con cada ocurrencia de old reemplazada por new. Pasa un tercer argumento count para limitar cuántos reemplazos se realizan.

Reemplazar una parte de un string en Python

text = "I like cats. Cats are great. Cats!"
print(text.replace("Cats", "Dogs"))         # replaces all occurrences
print(text.replace("Cats", "Dogs", 1))      # replaces first occurrence only
I like cats. Dogs are great. Dogs!
I like cats. Dogs are great. Cats!

Ten en cuenta que replace() distingue entre mayúsculas y minúsculas: "cats" y "Cats" se tratan como subcadenas diferentes.

Eliminar Espacios en Blanco

Los caracteres de espacio en blanco (espacios, tabulaciones, saltos de línea) al inicio o al final de un string a menudo deben eliminarse, especialmente al procesar entradas del usuario o leer archivos.

MétodoElimina espacio en blanco de
strip()Ambos extremos
lstrip()Solo el lado izquierdo (inicio)
rstrip()Solo el lado derecho (final)
raw = "   hello world   "
print(repr(raw.strip()))   # 'hello world'
print(repr(raw.lstrip()))  # 'hello world   '
print(repr(raw.rstrip()))  # '   hello world'

También puedes eliminar caracteres específicos pasándolos como argumento:

path = "///usr/local/bin///"
print(path.strip("/"))  # usr/local/bin

División de Strings

El método split(sep) divide un string según un separador y devuelve una lista de subcadenas. Sin argumento, divide por cualquier espacio en blanco y elimina los strings vacíos.

sentence = "Python is easy to learn"
words = sentence.split()
print(words)  # ['Python', 'is', 'easy', 'to', 'learn']

csv_row = "Alice,30,Engineer"
fields = csv_row.split(",")
print(fields)  # ['Alice', '30', 'Engineer']

Pasa un segundo argumento maxsplit para limitar el número de divisiones:

data = "one:two:three:four"
print(data.split(":", 2))  # ['one', 'two', 'three:four']

Unión de Strings

join() es el inverso de split(). Combina una lista de strings en uno, colocando un separador entre cada elemento. El separador es el string sobre el que llamas a join().

words = ["Python", "is", "fun"]
sentence = " ".join(words)
print(sentence)  # Python is fun

path_parts = ["usr", "local", "bin"]
path = "/".join(path_parts)
print(path)  # usr/local/bin

Usar join() es mucho más eficiente que concatenar strings en un bucle, porque cada + crea un nuevo objeto string. join() asigna el string final solo una vez.

Búsqueda Dentro de Strings

Varios métodos te ayudan a encontrar texto dentro de un string.

find() y index()

find(sub) devuelve el índice de la primera ocurrencia de sub, o -1 si no se encuentra. index(sub) hace lo mismo pero lanza ValueError en lugar de devolver -1.

text = "the quick brown fox"
print(text.find("quick"))   # 4
print(text.find("slow"))    # -1

print(text.index("brown"))  # 10

startswith() y endswith()

Estos devuelven True o False y son una alternativa más limpia al uso de segmentos cuando necesitas verificar el inicio o el final de un string.

url = "https://www.w3docs.com"
print(url.startswith("https"))   # True
print(url.endswith(".com"))      # True
print(url.startswith("http://")) # False

Puedes pasar una tupla de prefijos/sufijos para comprobar varias opciones a la vez:

filename = "photo.jpg"
print(filename.endswith((".jpg", ".jpeg", ".png")))  # True

count()

count(sub) devuelve cuántas veces aparece sub en el string (sin solapamientos).

text = "banana"
print(text.count("a"))   # 3
print(text.count("an"))  # 2

Comprobación de Propiedades de Strings

Python tiene una familia de métodos is* que devuelven True o False sobre el contenido de un string.

print("hello".isalpha())    # True  – all alphabetic
print("hello123".isalnum()) # True  – all alphanumeric
print("12345".isdigit())    # True  – all digits
print("  ".isspace())       # True  – all whitespace
print("Hello World".istitle()) # True – title-case

Estos son especialmente útiles para la validación de entrada.

Ejemplo Práctico: Limpiar la Entrada del Usuario

La modificación de strings en el mundo real suele combinar varias técnicas:

raw_input = "  Ada Lovelace  "

# Clean and normalise
name = raw_input.strip()          # remove surrounding spaces
name = name.title()               # ensure proper capitalisation

parts = name.split()              # split into first / last
first, last = parts[0], parts[1]

print(f"First: {first}, Last: {last}")  # First: Ada, Last: Lovelace

Referencia Rápida

OperaciónSintaxisDevuelve
Concatenara + bNuevo string
Repetirs * nNuevo string
Mayúsculass.upper()Nuevo string
Minúsculass.lower()Nuevo string
Títulos.title()Nuevo string
Segmentos[start:stop:step]Nuevo string
Reemplazars.replace(old, new)Nuevo string
Eliminar espacioss.strip()Nuevo string
Dividirs.split(sep)Lista
Unirsep.join(iterable)Nuevo string
Buscars.find(sub)Índice entero o -1
Contars.count(sub)Entero
Empieza cons.startswith(prefix)Boolean
Termina cons.endswith(suffix)Boolean

Para la lista completa de métodos de string incorporados, consulta String Methods. Para aprender sobre secuencias de escape como \n y \t, consulta Escape Characters. Para la búsqueda y manipulación de texto avanzada mediante patrones, consulta Python Regex.

Práctica

Práctica
Which of the following Python string methods or operations return a new string rather than modifying in place?
Which of the following Python string methods or operations return a new string rather than modifying in place?
Was this page helpful?