¿Qué es str.partition() en Python?

| Última modificación: 3 de febrero de 2025 | Tiempo de Lectura: 4 minutos

Una de las formas (existen otras) de dividir una cadena en Python en partes más pequeñas a modo de procesamiento es el str.partition(). Este permite dividir una cadena en tres partes basadas en un delimitador específico. Veamos qué es, cómo funciona y cómo usarlo.

str.partition() en Python

¿Qué es str.partition() en Python?

El método str.partition() es una de las formas de dividir una cadena en tres partes. Este toma un delimitador en Python, que es una subcadena que buscas, y separa el texto en tres elementos, así:

  1. Todo lo que está antes del delimitador.
  2. El delimitador mismo.
  3. Todo lo que está después del delimitador.

En este método el resultado es un tuple con tres elementos. Además, si el delimitador no se encuentra en la cadena, el str.partition() devuelve la cadena original seguida de dos cadenas vacías:

Su sintaxis es la siguiente:

string.partition(separator)

Aquí el separador es el delimitador que buscas dentro de la cadena. Si se encuentra, la cadena se divide en tres partesp.

El resultado es siempre un tuple con tres elementos: el texto antes del delimitador, el delimitador y el texto después del delimitador.

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Para entender mejor cómo funciona str.partition(), veamos un ejemplo:

txt = "I could eat bananas all day"
x = txt.partition("bananas")
print(x)

Salida:

('I could eat ', 'bananas', ' all day')

En este caso, hemos dividido la cadena “I could eat bananas all day” usando “bananas” como delimitador. El resultado es un tuple con tres elementos:

  1. ‘I could eat ‘: El texto antes de “bananas”.
  2. ‘bananas’: El texto que coincide con el delimitador.
  3. ‘ all day’: El texto que sigue a “bananas”.

¿Qué sucede si no se encuentra el delimitador?

Si en el proceso no se encuentra el delimitador dentro de la cadena, el método str.partition() no lanza un error, sino que solo devuelve la cadena original seguida de dos cadenas vacías, así:

txt = "I could eat apples all day"
x = txt.partition("bananas")
print(x)

El resultado:

('I could eat apples all day', '', '')

Como puedes ver, cuando no se encuentra “bananas”, el resultado es la cadena original junto con dos cadenas vacías.

Comparación entre str.partition() y otros métodos:

Método Descripción Retorna Uso Común Ventajas Desventajas
str.partition() Divide en tres partes: antes, delimitador y después. Tuple (antes, delimitador, después) Dividir en tres partes con un delimitador único. Simplificado, retorna tres partes. Solo divide en tres partes.
str.split() Divide en partes usando un delimitador. Lista de subcadenas Dividir por espacios, comas, etc. Flexible, divide múltiples veces. No devuelve delimitador, puede ser confuso.
str.splitlines() Divide en líneas por saltos de línea. Lista de subcadenas Dividir por saltos de línea (archivos, texto multilinea). Automático para saltos de línea. Solo para saltos de línea.
re.split() Divide usando una expresión regular. Lista de subcadenas Divisiones complejas con expresiones regulares. Gran flexibilidad con patrones. Requiere conocimientos de regex.
str.rsplit() Divide desde la derecha hacia la izquierda. Lista de subcadenas Dividir desde el final de la cadena. Útil para dividir las últimas partes. Puedes obtener resultados inesperados si no se usa correctamente.
str.slice() Extrae subcadenas usando índices. Subcadena Obtener partes de una cadena por índices. Rápido, eficiente. No sirve para divisiones con delimitadores.

¿En qué contextos podemos usar str.partition?

  • Separar una URL: si por ejemplo necesitas extraer la parte del dominio de una URL y el resto de esa ruta, puedes usar str.partition() para hacerlo:
url = "https://www.example.com/page1"
domain, sep, path = url.partition("://")
print(domain) # https
print(path) # www.example.com/page1

Aquí, hemos utilizado :// como delimitador para separar el protocolo de la URL del resto de la dirección.

  • Extraer nombre y valor de parámetros: también se usa cuando quieres extraer el nombre y el valor de un parámetro en una cadena, como en una consulta de base de datos o parámetros de URL:
param = "user=juan"
key, sep, value = param.partition("=")
print(key) # user
print(value) # juan
  • Dividir cadenas de texto complejas: en caso de que necesites dividir cadenas porque estás procesando grandes cantidades de texto, puedes hacerlo con str.partition(), así te evitas búsquedas manuale sde las posiciones de los delimitadores.
  • Procesar logs o textos estructurados: En el procesamiento de logs o textos con estructuras predefinidas, puedes usar str.partition() para separar secciones específicas del texto. Esto es recomendado, por ejemplo, al leer y analizar archivos de registros de sistemas.

Algunos aspectos a tener en cuenta

  • El delimitador no se encuentra: Si el delimitador no existe en la cadena, el método devolverá la cadena original junto con dos cadenas vacías. Si necesitas manejar esta situación de manera diferente, tendrás que agregar condiciones adicionales en tu código.
  • Limitación a un solo delimitador: str.partition() solo puede dividir la cadena en tres partes usando un solo delimitador. Si necesitas dividir la cadena por varios delimitadores, tendrías que usar un enfoque diferente, como expresiones regulares o el método split().

Si te ha gustado esta temática y quieres abordar otras similares, te puedes inscribir en neustro Bootcamp de Programación, en el cual podrás encontrar la respuesta a muchas preguntas que tenías respectoa cómo aprender a programar fácilmente. ¡Anímate y únete a la mejor comunidad!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado