Strings en Python

Aprendé a crear, manipular y transformar cadenas de texto. Los strings son uno de los tipos de datos más usados en Python.

¿Qué es un String?

Un string es una secuencia de caracteres encerrada entre comillas. En Python podés usar comillas simples, dobles o triples.

nombre   = "Juan"
apellido = 'Pérez'
parrafo  = """Este es un texto
que ocupa varias líneas
sin necesidad de \n"""
Comillas simples y dobles son equivalentes

En Python no hay diferencia entre 'texto' y "texto". Elegí una convención y sé consistente. Las triples comillas (""") sirven para texto multilínea.

Probá el Ejemplo 1: Tipos de strings

F-strings — Interpolación moderna

Los f-strings (formatted strings) permiten insertar variables y expresiones directamente dentro de un string. Es la forma más moderna y recomendada.

nombre = "Ana"
edad   = 28

# F-string — ponés f antes de las comillas
print(f"Hola, soy {nombre} y tengo {edad} años")

# Podés poner expresiones completas dentro de {}
print(f"El doble de mi edad es {edad * 2}")
print(f"Mayúsculas: {nombre.upper()}")

# Formateo de números
precio = 1234.5678
print(f"Precio: ${precio:.2f}")    # 2 decimales
print(f"Entero: {precio:.0f}")     # sin decimales
:.2f — ¿qué significa?

Es un format specifier: : inicia el formato, .2 indica 2 decimales, f significa float. {precio:.2f} muestra el número con exactamente 2 decimales.

Probá el Ejemplo 2: F-strings

Métodos de strings

Python incluye decenas de métodos para manipular strings. Los más usados:

Transformar texto

texto = "  Hola Mundo  "

print(texto.upper())      # "  HOLA MUNDO  "
print(texto.lower())      # "  hola mundo  "
print(texto.strip())      # "Hola Mundo"   — quita espacios
print(texto.lstrip())     # "Hola Mundo  " — quita solo izquierda
print(texto.rstrip())     # "  Hola Mundo" — quita solo derecha
print(texto.title())      # "  Hola Mundo  " — Primera letra mayúscula
print(texto.swapcase())   # "  hOLA mUNDO  " — invierte mayúsculas

Buscar y reemplazar

frase = "Python es genial, Python es poderoso"

print(frase.find("Python"))       # 0 — posición de la primera ocurrencia
print(frase.count("Python"))      # 2 — cuántas veces aparece
print(frase.replace("Python", "Django"))  # reemplaza todas
print(frase.startswith("Python")) # True
print(frase.endswith("poderoso")) # True
print("genial" in frase)          # True — in para buscar

Dividir y unir

csv = "manzana,naranja,uva,pera"
frutas = csv.split(",")           # ['manzana', 'naranja', 'uva', 'pera']
print(frutas)
print(frutas[0])                  # 'manzana'

# Unir con join
separado = " - ".join(frutas)     # "manzana - naranja - uva - pera"
print(separado)

upper() / lower()

"hola".upper() → "HOLA"

Convierte a mayúsculas o minúsculas

strip()

" texto ".strip() → "texto"

Elimina espacios al inicio y al final

split()

"a,b,c".split(",") → ['a','b','c']

Divide el string en una lista

replace()

"hola".replace("h","H") → "Hola"

Reemplaza texto dentro del string

join()

"-".join(['a','b']) → "a-b"

Une una lista en un string

find()

"hola".find("o") → 1

Posición de la primera ocurrencia

Probá el Ejemplo 3: Métodos de strings

Indexing y Slicing

Cada carácter de un string tiene una posición (índice) que empieza en 0. Podés acceder a caracteres individuales o a porciones del string.

texto = "Python"
#         P y t h o n
#         0 1 2 3 4 5   (índices positivos)
#        -6-5-4-3-2-1   (índices negativos)

print(texto[0])    # "P"
print(texto[3])    # "h"
print(texto[-1])   # "n" — último carácter
print(texto[-2])   # "o" — penúltimo

Slicing — extraer porciones

texto = "Python es genial"
#        [inicio:fin:paso]

print(texto[0:6])    # "Python"    — del 0 al 5 (6 no incluido)
print(texto[7:9])    # "es"
print(texto[10:])    # "genial"    — desde el 10 hasta el final
print(texto[:6])     # "Python"    — desde el inicio hasta el 5
print(texto[::2])    # "Pto sgnl"  — un carácter de cada 2
print(texto[::-1])   # "laieneg se nohtyP" — invertido
Los strings son inmutables

No podés cambiar un carácter individual: texto[0] = "J" da error. Para modificar un string tenés que crear uno nuevo: texto = "J" + texto[1:]

len() y otras funciones built-in

texto = "Alexandria"

print(len(texto))          # 10 — longitud
print(min(texto))          # "A" — carácter menor (por ASCII)
print(max(texto))          # "x" — carácter mayor
print(texto.isalpha())     # True — solo letras
print("123".isnumeric())   # True — solo números
print("  ".isspace())      # True — solo espacios
print(texto.isalnum())     # True — letras y números

Ejemplo Completo

Procesador de texto que aplica varias operaciones:

# Datos de entrada
nombre_completo = "   juan pablo pérez   "
email           = "JUAN@EJEMPLO.COM"
descripcion     = "soy estudiante de python,me gusta programar,quiero aprender más"

# Limpiar y formatear nombre
nombre_limpio = nombre_completo.strip().title()
print(f"Nombre: {nombre_limpio}")

# Normalizar email
email_normalizado = email.lower()
print(f"Email: {email_normalizado}")

# Procesar descripción
oraciones = descripcion.split(",")
print(f"\nDescripción en {len(oraciones)} partes:")
for i, oracion in enumerate(oraciones, 1):
    print(f"  {i}. {oracion.strip().capitalize()}")
Probá el Ejemplo 4: Procesador de texto

Buenas Prácticas

  • Usá f-strings para formateo — son más legibles que + o .format()
  • Siempre strip() antes de procesar texto del usuario — puede tener espacios extra
  • in para buscar — "hola" in texto es más legible que find()
  • join() para unir listas — más eficiente que concatenar en un loop
  • Comillas consistentes — elegí simples o dobles y no mezcles sin razón