Cadenas de Texto
## Objetivos de Aprendizaje
- Dominar la creación y manipulación de cadenas
- Entender los métodos de cadena
- Aprender slicing y formateo
- Trabajar con conceptos básicos de expresiones regulares
## Crear Cadenas
### Cadenas Básicas
```python
simple = 'Hola'
doble = "Hola"
multi = """Esto es una
cadena de
varias líneas"""
# Caracteres de escape
ruta = "C:\\Users\\Nombre"
nueva_linea = "Línea 1\nLínea 2"
tab = "Col1\tCol2"
```
### Cadenas Crudas
```python
ruta = r"C:\Users\Nombre" # Backslashes no escapados
```
### f-strings (Python 3.6+)
```python
nombre = "Ana"
edad = 30
print(f"Me llamo {nombre} y tengo {edad}")
print(f"En 5 años: {edad + 5}")
```
## Slicing de Cadenas
```python
texto = "¡Hola, Mundo!"
print(texto[0]) # ¡
print(texto[-1]) # !
print(texto[0:5]) # ¡Hola
print(texto[7:12]) # Mundo
print(texto[:5]) # ¡Hola
print(texto[7:]) # Mundo!
print(texto[::2]) # ¡oa ud! (cada otro char)
print(texto[::-1]) # !odnuM ,aloH¡ (reversa)
```
## Longitud de Cadena
```python
texto = "Hola"
print(len(texto)) # 5
```
## Métodos de Cadena
### Métodos de Mayúsculas/Minúsculas
```python
texto = "¡Hola, Mundo!"
print(texto.upper()) # ¡HOLA, MUNDO!
print(texto.lower()) # ¡hola, mundo!
print(texto.capitalize()) # ¡hola, mundo!
print(texto.title()) # ¡Hola, Mundo!
print(texto.swapcase()) # ¡hOLA, mUNDO!
```
### Buscar y Encontrar
```python
texto = "¡Hola, Mundo!"
print(texto.find("Mundo")) # 7 (índice de primera coincidencia)
print(texto.find("Python")) # -1 (no encontrado)
print(texto.index("Mundo")) # 7 (lanza si no encontrado)
print(texto.count("o")) # 2 (contar ocurrencias)
print(texto.startswith("¡Hola")) # True
print(texto.endswith("!")) # True
```
### Strip y Limpiar
```python
texto = " Hola "
print(texto.strip()) # "Hola" (eliminar ambos extremos)
print(texto.lstrip()) # "Hola " (eliminar izquierda)
print(texto.rstrip()) # " Hola" (eliminar derecha)
# Eliminar caracteres específicos
texto = "...Hola..."
print(texto.strip(".")) # "Hola"
```
### Split y Join
```python
texto = "manzana,plátano,cereza"
print(texto.split(",")) # ['manzana', 'plátano', 'cereza']
print(texto.split(",", 1)) # ['manzana', 'plátano,cereza']
# Join
palabras = ["manzana", "plátano", "cereza"]
print(",".join(palabras)) # manzana,plátano,cereza
print(" ".join(palabras)) # manzana plátano cereza
print("\n".join(palabras)) # manzana\nplátano\ncereza
```
### Reemplazar
```python
texto = "¡Hola, Mundo!"
print(texto.replace("Mundo", "Python")) # ¡Hola, Python!
print(texto.replace("o", "0")) # ¡H0la, Mund0!
# Reemplazar con conteo
print(texto.replace("o", "0", 1)) # ¡H0la, Mundo!
```
### Verificar Contenido
```python
texto = "Hola123"
print(texto.isalpha()) # False (tiene dígitos)
print(texto.isdigit()) # False
print(texto.isalnum()) # True (letras o dígitos)
print(texto.isnumeric()) # False
num = "12345"
print(num.isdigit()) # True
print(num.isnumeric()) # True
mixto = "Hola Mundo"
print(mixto.islower()) # False
print(mixto.isupper()) # False
print(mixto.istitle()) # True
print(mixto.isspace()) # False
```
## Formateo de Cadenas
### f-strings (Recomendado)
```python
nombre = "Ana"
edad = 30
pi = 3.14159
print(f"Nombre: {nombre}, Edad: {edad}")
print(f"Pi: {pi:.2f}") # 3.14
print(f"Binario: {42:b}") # Binario: 101010
print(f"Hex: {255:02x}") # Hex: ff
```
### Método format()
```python
print("{} y {}".format("manzana", "plátano")) # manzana y plátano
print("{1} y {0}".format("manzana", "plátano")) # plátano y manzana
print("{nombre} tiene {edad}".format(nombre="Ana", edad=30))
print("{:>10}".format("derecha")) # " derecha"
print("{:10}".format("izquierda")) # "izquierda "
print("{:^10}".format("centro")) # " centro "
print("{:*>10}".format("relleno")) # "*******relleno"
```
### Operador %
```python
nombre = "Ana"
puntuacion = 85.5
print("Hola, %s" % nombre) # Hola, Ana
print("%s obtuvo %.1f" % (nombre, puntuacion)) # Ana obtuvo 85.5
print("%d %f" % (42, 3.14)) # 42 3.140000
```
## Concatenación de Cadenas
```python
# Con +
primero = "Hola"
segundo = "Mundo"
print(primero + ", " + segundo) # Hola, Mundo
# Con join
partes = ["Hola", "Mundo"]
print(", ".join(partes)) # Hola, Mundo
# Con f-string
print(f"{primero}, {segundo}") # Hola, Mundo
# Repetir con *
print("Ha" * 3) # HaHaHa
```
## Comparación de Cadenas
```python
print("manzana" == "manzana") # True
print("manzana" == "Manzana") # False
print("manzana" < "banana") # True (alfabético)
print("a" < "A") # False (ASCII)
```
## Cadena a Lista y Viceversa
```python
# Cadena a lista
texto = "hola"
chars = list(texto)
print(chars) # ['h', 'e', 'l', 'l', 'o']
# Lista a cadena
chars = ['h', 'e', 'l', 'l', 'o']
print("".join(chars)) # hola
```
## Naturaleza Inmutable
Las cadenas son inmutables - no pueden cambiarse en su lugar:
```python
texto = "Hola"
# texto[0] = "J" # ¡TypeError!
# En su lugar:
texto = "J" + texto[1:] # Crea nueva cadena
print(texto) # Jola
```
## Patrones Comunes
### Verificar si Cadena Contiene Subcadena
```python
texto = "¡Hola, Mundo!"
if "Mundo" in texto:
print("¡Encontrado!")
if "Python" not in texto:
print("No encontrado")
```
### Eliminar Puntuación
```python
import string
texto = "¡Hola, Mundo! ¿Cómo estás?"
limpio = texto.translate(str.maketrans("", "", string.punctuation))
print(limpio) # ¡Hola Mundo Cómo estás
```
### Verificar si es Número
```python
def es_numero(s):
try:
float(s)
return True
except ValueError:
return False
print(es_numero("123")) # True
print(es_numero("12.3")) # True
print(es_numero("abc")) # False
```
## Resumen
- Las cadenas son secuencias inmutables de caracteres
- Usa f-strings para formateo (Python 3.6+)
- Métodos clave: split(), join(), replace(), strip(), find(), upper(), lower()
- Slicing con `[start:stop:step]`
- `in` verifica membresía de subcadena
- Las cadenas soportan indexación y slicing
- Usa `join()` para combinar cadenas eficientemente
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →