Texto, pero con métodos
Un string de Python es una secuencia de caracteres, y usarás strings más que cualquier otro tipo. Cada nombre, etiqueta, mensaje, URL, ruta de archivo y respuesta de API vive en un string en algún momento.
Crea uno con comillas — simples, dobles o triples:
Las comillas simples y dobles son intercambiables. Usa las que te ahorren tener que escapar un carácter. "don't" queda limpio; 'don\'t' necesita una barra invertida.
Los strings son inmutables. Una vez que un string existe, no puedes cambiar uno de sus caracteres en el sitio. Cada operación que parece cambiar un string en realidad devuelve uno nuevo. Por eso escribirás text = text.upper() en vez de solo text.upper() — sin la reasignación, el nuevo string en mayúsculas se tiraría.
Unir y repetir
Dos operadores hacen la mayor parte de la combinación de strings que vas a necesitar:
+ concatena strings. * repite un string. Ambos devuelven un string nuevo.
Concatenar muchas piezas con + se vuelve feo rápido. Cuando estés mezclando valores de tipos distintos dentro de un mensaje, recurre a las f-strings — mira la siguiente sección.
f-Strings: la forma con la que normalmente vas a formatear
Pon una f delante de la comilla de apertura y el string se convierte en una plantilla. Cualquier cosa en {...} se reemplaza con el valor de esa expresión:
Puedes meter cualquier expresión dentro de las llaves — variables, aritmética, llamadas a métodos, llamadas a funciones. Mantenlas simples, eso sí; si te tienta apretar un cálculo de tres líneas dentro de {...}, calcúlalo primero en una variable con nombre.
Las f-strings también soportan especificadores de formato después de un dos puntos, para controlar el formato de números, el relleno y la alineación:
Estos format specs son los mismos que usa str.format() y vale la pena un vistazo rápido cuando estés cómodo con lo básico. No los necesitas para código del primer día.
Slicing: coger un trozo
Los strings son indexables como secuencias. Cada carácter tiene una posición que empieza en cero, y puedes coger un carácter o un rango:
El patrón [start:stop:step] aparece también en listas y otras secuencias, así que dedicar unos minutos a interiorizarlo se paga en todos sitios.
Dos cosas que vale la pena señalar:
- El índice
stopes exclusivo:word[0:2]incluye los índices 0 y 1, no el 2. - Los índices negativos cuentan desde el final:
-1es el último carácter,-2el anterior, y así.
Cómo invertir un string
Los strings no tienen método .reverse() — son inmutables — pero el slicing con paso -1 hace el trabajo en una línea:
word[::-1] se lee como "desde el principio al final, paso hacia atrás de 1". El resultado es un string nuevo; el original queda intacto. Si necesitas iterar los caracteres al revés sin materializar un nuevo string, reversed(word) devuelve un iterador perezoso.
Cómo comprobar la longitud de un string
len(text) devuelve el número de caracteres:
Ten en cuenta que len cuenta puntos de código Unicode, no bytes. len("café") es 4, no 5, aunque la codificación UTF-8 ocupe más bytes — que suele ser lo que quieres.
Cómo comprobar si un string contiene un substring
El operador in es la comprobación idiomática, y se lee como inglés:
Para comprobaciones sin distinción de mayúsculas, normaliza ambos lados primero:
Si necesitas la posición, no solo un sí/no, usa .find() — devuelve el índice o -1 cuando el substring no está.
Métodos de string comunes
Los strings tienen docenas de métodos. Recurrirás a este puñado constantemente:
Partir y unir:
.split(separator) convierte un string en una lista. separator.join(list_of_strings) lo une de vuelta. Estos dos métodos cargan con una cantidad desproporcionada del trabajo real con strings.
Otro par útil:
Ese es un parser para una entrada de configuración de una línea, escrito en tres líneas. Strings pequeños, gran palanca.
Comprobar qué hay dentro
Varios métodos devuelven booleanos, útiles en condiciones if:
Úsalos con moderación — no manejan todas las rarezas Unicode que podrías esperar. Para cualquier cosa más allá de ASCII, apóyate en regex o en unicodedata.
Escapar caracteres especiales
Algunos caracteres necesitan una barra invertida para aparecer dentro de un string:
Si estás escribiendo rutas de Windows o regex, los strings raw te hacen la vida más fácil. Pon una r delante de la comilla y las barras invertidas dejan de ser caracteres de escape:
Los strings están en todas partes, así que manténlo legible
Tres hábitos que evitan que el código con muchos strings se convierta en sopa:
- Usa f-strings para interpolación. No encadenes
+entre varios tipos. - Reasigna cuando "mutes".
text = text.strip(), no solotext.strip(). - Recurre a
.split()y.join()antes de escribir bucles manuales para parsear o ensamblar texto. Son más rápidos, más claros y más difíciles de equivocar.
Siguiente: f-strings en profundidad — la herramienta de formateo que ya has visto un puñado de veces, más los specs de formato de números y fechas que las hacen dignas de dominar.
Preguntas frecuentes
¿Qué es una f-string en Python?
Una f-string es un literal de string prefijado con f, donde cualquier cosa dentro de {...} se reemplaza con el valor de esa expresión. Ejemplo: f"Hello, {name}!" inserta el valor actual de name en el string en tiempo de ejecución.
¿Cómo invierto un string en Python?
Usa slicing con paso -1: reversed_text = original[::-1]. Eso devuelve un nuevo string hecho con los mismos caracteres en orden inverso. El string original queda intacto porque los strings en Python son inmutables.
¿Cómo parto un string en Python?
Llama a .split() sobre el string. Sin argumento parte por cualquier espacio en blanco: "a b c".split() devuelve ['a', 'b', 'c']. Puedes pasar un separador específico: "a,b,c".split(",") devuelve ['a', 'b', 'c'].
¿Los strings de Python son mutables?
No. Los strings son inmutables — una vez que un string existe, no puedes cambiar ninguno de sus caracteres en el sitio. Cada método que "cambia" un string en realidad devuelve uno nuevo. Por eso ves patrones como text = text.strip() — reasignas la variable al nuevo string.
¿Cómo concateno strings en Python?
Usa + para unir dos strings: "hello" + " " + "world". Para combinar un valor dentro de una frase, prefiere una f-string: f"Hello, {name}". Para juntar muchas piezas de una lista, usa separator.join(pieces) — es más rápido y se lee mejor que + encadenado.
¿Cómo compruebo la longitud de un string en Python?
Llama a la función incorporada len(text). Devuelve el número de caracteres (puntos de código Unicode), así que len("café") es 4. Para la longitud en bytes, codifica primero: len(text.encode("utf-8")).