¿Qué es la función split() de Python? De básico a avanzado con ejemplos prácticos

目次

1. Introducción

Al realizar procesamiento de datos o manipulación de cadenas en Python, la función que se utiliza con frecuencia es split(). En este artículo, explicaremos en detalle desde los conceptos básicos hasta los usos avanzados de la función split() de Python. Lo haremos intercalando ejemplos de código para que sea fácil de entender incluso para principiantes.

¿Qué es la función split() de Python?

La función split() es uno de los métodos de cadena estándar de Python que divide una cadena mediante un delimitador específico y la devuelve como una lista. Por ejemplo, se puede dividir una cadena usando comas o espacios como criterio.

text = "Python,Java,C++"
words = text.split(",")
print(words)  # Salida: ['Python', 'Java', 'C++']

De esta manera, al usar split(), la cadena separada por comas se convierte en una lista.

¿Por qué es importante la función split()?

La función split() se utiliza en diversas situaciones como las siguientes.

  • Procesamiento de entrada de usuario
  • Análisis de datos CSV
  • División de archivos de log
  • Procesamiento de cadenas con múltiples valores

Al aprender programación, split() es una de las funciones muy importantes, así que asegúrate de entenderla bien.

2. Basics of the split() Function (For Beginners)

En esta sección, explicamos el uso básico de la función split() de Python. Lo explicamos con ejemplos de código para que sea fácil de entender incluso para principiantes.

2-1. Uso básico de la función split()

La sintaxis básica de la función split() es la siguiente.

cadena.split(separador, número_máximo_de_divisiones)
Nombre del parámetroDescripción
separadorEl carácter que sirve de criterio para la división (si se omite, el espacio es el criterio)
número_máximo_de_divisionesLímite del número de divisiones (si se omite, se divide todo)

Uso básico

En el siguiente ejemplo, usamos split() con la coma (,) como separador.

text = "Python,Java,C++"
words = text.split(",")
print(words)  # Salida: ['Python', 'Java', 'C++']

Caso en que no se especifica el separador

Si se omiten los argumentos de split(), por defecto se divide basándose en caracteres en blanco (espacio, tabulador, salto de línea).

text = "Python Java C++"
print(text.split())  # Salida: ['Python', 'Java', 'C++']

Incluso si hay múltiples espacios en blanco, se ignoran y se divide adecuadamente; esa es una característica.

text = "Python   Java  C++"
print(text.split())  # Salida: ['Python', 'Java', 'C++']

2-2. Especificar maxsplit (Limitación del número de divisiones)

Si se especifica el segundo argumento maxsplit de split(), se puede dividir hasta el número máximo especificado.

text = "apple banana cherry date"
print(text.split(" ", 2))  # Salida: ['apple', 'banana', 'cherry date']

En este ejemplo, se realiza una división máxima de 2 veces, y en el último elemento de la lista se almacena el resto de la cadena tal como está.

Caso en que se desea eliminar los espacios en blanco extras al principio y al final

Combinando con strip(), se pueden eliminar los espacios innecesarios al principio y al final.

text = "  Python Java C++  "
print(text.strip().split())  # Salida: ['Python', 'Java', 'C++']

3. Uso avanzado de split() (para usuarios intermedios)

A partir de aquí, explicaremos el uso avanzado de la función split() de Python. No solo la división con un delimitador simple, sino también métodos para usar múltiples delimitadores y el aprovechamiento de rsplit().

3-1. División basada en una cadena específica

En los usos básicos hasta ahora, se especificó un delimitador (por ejemplo, "," o " "). Sin embargo, hay casos en los que el delimitador es diferente, o se utilizan saltos de línea o tabulaciones.

Dividir por coma (,)

text = "apple,banana,grape"
print(text.split(","))  # Salida: ['apple', 'banana', 'grape']

**Dividir por salto de línea (`

`)**
Al usar el salto de línea como delimitador, se puede convertir texto de múltiples líneas en una lista.

text = "apple
banana
grape"
print(text.split("\n"))  # Salida: ['apple', 'banana', 'grape']

Dividir por tabulación ( )

Es útil al procesar datos separados por tabulaciones (como archivos TSV).

text = "apple	banana	grape"
print(text.split("\t"))  # Salida: ['apple', 'banana', 'grape']

3-2. División con múltiples delimitadores usando re.split()

La función estándar split() solo permite especificar un delimitador único. Si desea dividir con múltiples delimitadores diferentes como coma (,), punto y coma (;), espacio ( ) etc., utilice re.split().

Especificar múltiples delimitadores

import re

text = "apple;banana,grape orange"
words = re.split(r"[;, ]+", text)
print(words)  # Salida: ['apple', 'banana', 'grape', 'orange']

Puntos clave

  • re.split(r"[;, ]+", text) en r"[;, ]+" significa dividir por ;, , o espacio utilizando expresiones regulares.
  • + agrupa delimitadores consecutivos en uno solo para evitar elementos vacíos innecesarios.

3-3. rsplit() que divide desde la derecha

La split() normal divide desde la izquierda, pero con rsplit() se puede dividir desde la derecha. Es especialmente útil para el procesamiento de rutas de archivos o URL.

Ejemplo: Comparación entre split() y rsplit()

text = "home/user/documents/file.txt"

print(text.split("/", 2))  # Salida: ['home', 'user', 'documents/file.txt']
print(text.rsplit("/", 2)) # Salida: ['home/user', 'documents', 'file.txt']

split() divide dos veces desde la izquierda y almacena el resto en el último elemento.
rsplit() divide dos veces desde la derecha y almacena el resto en el primer elemento.

Esto es útil al obtener la jerarquía de directorios o extraer el nombre de archivo.

4. Ejemplos de uso específicos (edición práctica)

Aquí, explicamos cómo utilizar la función split() en el entorno real de programación con ejemplos concretos. En particular, introducimos situaciones que se usan con frecuencia en el trabajo, como procesamiento de datos CSV, análisis de entrada de usuario, análisis de archivos de log.

4-1. Procesamiento de datos CSV

Datos CSV (Comma-Separated Values) es un formato de datos donde los valores están separados por comas (,). Usando split() de Python, se puede procesar los datos de manera simple como una lista.

Dividir una línea de datos en formato CSV

csv_line = "2023-01-01,Tokyo,25"
data = csv_line.split(",")
print(data)  # Salida: ['2023-01-01', 'Tokyo', '25']

Este método es efectivo para procesar datos CSV a pequeña escala, pero para manejar archivos CSV más grandes, es común usar el módulo csv.

Método más apropiado usando csv.reader

import csv

csv_data = """2023-01-01,Tokyo,25
2023-01-02,Osaka,27
2023-01-03,Nagoya,26"""

lines = csv_data.split("n")  # Dividir por líneas
reader = csv.reader(lines)

for row in reader:
    print(row)  # Salida: ['2023-01-01', 'Tokyo', '25'] etc.

Puntos clave

  • Obtener cada línea con split("n")
  • Usar csv.reader() permite procesar correctamente la separación por comas
  • Para manejar archivos CSV reales, es bueno usar open()

4-2. Análisis de entrada de usuario

En situaciones donde se procesan datos ingresados por el usuario desde formularios o línea de comandos, split() es conveniente.

Ejemplo: Convertir la entrada del usuario a una lista

user_input = "Alice | 30 | Developer"
data = user_input.split(" | ")
print(data)  # Salida: ['Alice', '30', 'Developer']

Puntos clave

  • Usar " | " como delimitador para dividir correctamente la entrada formateada
  • Al convertir a lista, el procesamiento posterior se facilita

Ejemplo: Entrada separada por espacios

user_input = input("Por favor ingrese nombre y edad (ejemplo: Alice 30): ")
data = user_input.split()
print(f"Nombre: {data[0]}, Edad: {data[1]}")

Ejemplo de ejecución

Por favor ingrese nombre y edad (ejemplo: Alice 30): Bob 25
Nombre: Bob, Edad: 25

Notas

  • Es necesario unificar el formato de entrada del usuario
  • Realizar el procesamiento de errores con try-except es más seguro

4-3. Análisis de archivos de log

Al analizar archivos de log del servidor, se puede usar split() para extraer dirección IP, fecha, información de solicitud, etc.

Analizar el log de acceso de Apache

log_entry = "192.168.0.1 - - [10/Feb/2024:14:32:10 +0900] GET /index.html"

log_parts = log_entry.split(" ")
ip_address = log_parts[0]
timestamp = log_parts[3].strip("[]")  # Eliminar [ ]
request_method = log_parts[5].strip('"')  # Eliminar " de "GET"
url = log_parts[6]

print(f"Dirección IP: {ip_address}")
print(f"Marca de tiempo: {timestamp}")
print(f"Método de solicitud: {request_method}")
print(f"URL: {url}")

Resultado de ejecución

Dirección IP: 192.168.0.1
Marca de tiempo: 10/Feb/2024:14:32:10 +0900
Método de solicitud: GET
URL: /index.html

Puntos clave

  • Dividir por " " (espacio) para obtener cada elemento
  • Usar strip("[]") o strip('"') para eliminar símbolos innecesarios
  • Se puede usar para análisis y filtrado de datos de log

5. La función split() y otros métodos relacionados

La función split() de Python es un método conveniente para dividir cadenas, pero también hay otros métodos con funciones similares. Es importante usar el método apropiado según la situación.

Aquí explicamos split() y otros métodos que se comparan frecuentemente (splitlines()partition()rsplit()).

5-1. splitlines()(división por saltos de línea)

Básico de splitlines()

splitlines() es un método que divide la cadena basándose en saltos de línea ().

Es similar al split("n") habitual, pero su característica es que también maneja diferentes códigos de salto de línea ("rn", etc.).

Ejemplo de uso

text = "HellonWorldnPython"
print(text.splitlines())  # Salida: ['Hello', 'World', 'Python']

Diferencia con split(«n»)

text = "HellonWorldnPythonn"
print(text.split("n"))    # Salida: ['Hello', 'World', 'Python', '']
print(text.splitlines())   # Salida: ['Hello', 'World', 'Python']

split("n") considera el salto de línea al final, por lo que se agrega una cadena vacía al final de la lista, pero
splitlines() ignora el salto de línea al final, por lo que es conveniente para el procesamiento de datos.

5-2. partition()(división en 3 partes con el primer separador)

partition() es un método que divide antes y después del primer separador encontrado y devuelve una tupla de 3 elementos.

Ejemplo de uso

text = "Hello,World,Python"
print(text.partition(","))  # Salida: ('Hello', ',', 'World,Python')

Observa que la salida es una tupla ((parte anterior, separador, parte posterior)).

Diferencia con split()

MétodoResultado de la división
split(",")['Hello', 'World', 'Python']
partition(",")('Hello', ',', 'World,Python')

La característica de partition() es que «solo divide el primero».

Ejemplo de aplicación: Extracción de la parte de dominio de una URL

url = "https://example.com/page"
protocol, separator, domain = url.partition("://")
print(protocol)   # Salida: https
print(domain)     # Salida: example.com/page
  • Usar split("://") devuelve una lista, pero partition() se divide en 3 elementos, por lo que se puede obtener fácilmente una parte específica.

5-3. rsplit()(división desde la derecha)

El split() habitual divide desde la izquierda, pero usando rsplit() se puede dividir desde la derecha.
Es conveniente para el procesamiento de nombres de archivos o para obtener la parte más baja del dominio.

Ejemplo de uso

text = "home/user/documents/file.txt"
print(text.rsplit("/", 1))  # Salida: ['home/user/documents', 'file.txt']
  • split("/") divide en todas las barras, pero
  • rsplit("/", 1) solo divide en la barra de la derecha.

Diferencia con split()

text = "apple banana cherry date"
print(text.split(" ", 2))   # Divide 2 veces desde la izquierda → ['apple', 'banana', 'cherry date']
print(text.rsplit(" ", 2))  # Divide 2 veces desde la derecha → ['apple banana', 'cherry', 'date']

5-4. Comparación de split() y métodos relacionados

MétodoDescripciónUsos principales
split()Divide todo con el separador especificadoDivisión general de cadenas
splitlines()Divide por códigos de salto de líneaAnálisis de archivos de texto
partition()Divide solo el primero en 3 partesAnálisis de URL, etc.
rsplit()Divide un número especificado de veces desde la derechaProcesamiento de rutas y nombres de archivos

6. Preguntas frecuentes (FAQ)

Al usar la función split() de Python, explicamos los puntos de duda comunes y los puntos donde es fácil que ocurran errores. Aquí presentamos problemas que se encuentran frecuentemente en la codificación real y sus soluciones.

6-1. ¿Por qué split() incluye cadenas vacías en la lista?

Problema

Al ejecutar el siguiente código, el resultado de split() puede incluir cadenas vacías.

text = "apple,,banana,grape"
print(text.split(","))  # Salida: ['apple', '', 'banana', 'grape']

Causa

  • Cuando hay comas consecutivas (,,), el elemento entre ellas se trata como cadena vacía ('').

Solución

Para excluir elementos vacíos, es conveniente usar notación de comprensión de listas.

text = "apple,,banana,grape"
words = [word for word in text.split(",") if word]
print(words)  # Salida: ['apple', 'banana', 'grape']

6-2. ¿Cuál es la diferencia entre split() y rsplit()?

Comparación de diferencias

MétodoDirección de divisiónUsos
split()De izquierda a derechaDivisión de cadenas general
rsplit()De derecha a izquierdaProcesamiento de rutas o URL

Ejemplo de código real

text = "apple banana cherry date"
print(text.split(" ", 2))   # División 2 veces desde la izquierda → ['apple', 'banana', 'cherry date']
print(text.rsplit(" ", 2))  # División 2 veces desde la derecha → ['apple banana', 'cherry', 'date']

6-3. ¿Cómo usar split() eliminando espacios en blanco?

Solución

text = "  apple   banana  grape  "
words = [word.strip() for word in text.split()]
print(words)  # Salida: ['apple', 'banana', 'grape']

6-4. Quiero usar múltiples delimitadores diferentes con split()

Solución

import re

text = "apple;banana,grape orange"
words = re.split(r"[;, ]+", text)
print(words)  # Salida: ['apple', 'banana', 'grape', 'orange']

6-5. ¿Cuándo usar split() y cuándo usar re.split()?

Casos en los que usar split()

text = "apple,banana,grape"
print(text.split(","))  # ['apple', 'banana', 'grape']

Casos en los que usar re.split()

import re
text = "apple;banana,grape orange"
print(re.split(r"[;, ]+", text))  # ['apple', 'banana', 'grape', 'orange']

6-6. ¿Cómo crear un diccionario usando la salida de split()?

Solución

text = "nombre:Alice,edad:30,profesión:ingeniero"
pairs = text.split(",")

data_dict = {pair.split(":")[0]: pair.split(":")[1] for pair in pairs}
print(data_dict)

Salida

{'nombre': 'Alice', 'edad': '30', 'profesión': 'ingeniero'}

7. Resumen

En este artículo, hemos explicado en detalle la función split() de Python, desde lo básico hasta lo avanzado, ejemplos prácticos de uso, métodos relacionados y FAQ.
Finalmente, repasaremos el contenido aprendido y organizaremos los puntos clave para aprovechar al máximo split().

7-1. split() Puntos importantes de la función

ElementoExplicación
Sintaxis básicacadena.split(separador, número_máximo_de_divisiones)
Comportamiento por defectoSe divide por espacios (blancos)
Separador específico"cadena".split(",") Se puede especificar, etc.
Uso de maxsplitSe puede limitar el número de divisiones (split(",", 2))
División desde el lado derechoSe puede dividir desde la derecha usando rsplit()
Múltiples separadoresre.split(r"[;, ]+", text) Se puede manejar
División por saltos de líneaEs conveniente usar splitlines()
Dividir solo el primeroCon partition() se obtiene la tupla ('mitad_frontal', 'separador', 'mitad_posterior')

7-2. Escenarios para aprovechar split()

  • Procesamiento de datos CSVsplit(",")
  • Análisis de entrada de usuariosplit(" | ")
  • Análisis de archivos de logsplit(" ")
  • Procesamiento de URL o rutas de archivosrsplit("/", 1)
  • Generación de datos de diccionario{key: value for key, value in (pair.split(":") for pair in text.split(","))}

7-3. Mejores prácticas para dominar split()

Entender el comportamiento por defecto y procesar espacios innecesarios

text = "  apple   banana  grape  "
print(text.split())  # ['apple', 'banana', 'grape']

Para excluir elementos vacíos, usar comprensión de listas

words = [word for word in text.split(",") if word]

Para usar múltiples separadores diferentes, usar re.split()

import re
text = "apple;banana,grape orange"
print(re.split(r"[;, ]+", text))  # ['apple', 'banana', 'grape', 'orange']

Si se quiere limitar el número de divisiones, usar maxsplit

text = "Alice Bob Charlie"
print(text.split(" ", 1))  # ['Alice', 'Bob Charlie']

Para análisis de logs o procesamiento de rutas, usar rsplit()

text = "home/user/documents/file.txt"
print(text.rsplit("/", 1))  # ['home/user/documents', 'file.txt']

Para obtener solo el primer separador, usar partition()

text = "name:Alice,age:30,job:engineer"
key, sep, value = text.partition(":")
print(key, value)  # name Alice

7-4. Recursos para un aprendizaje adicional

Al utilizar la documentación oficial de Python y otros recursos de aprendizaje, se puede obtener una comprensión más profunda.

7-5. Resumen y próximos pasos

El método split() de Python es uno de los métodos más frecuentemente utilizados al manipular cadenas de texto.
Al entender los fundamentos y combinarlos con métodos relacionados, puedes procesar datos de manera más eficiente.

✅ Puntos de aprendizaje hasta aquí

  • Uso básico y funcionamiento de split()
  • Diferencias con rsplit(), partition() y splitlines()
  • Ejemplos de aplicación utilizando re.split()
  • Ejemplos de uso práctico (procesamiento de CSV, análisis de logs, entrada de usuario)

Como temas a aprender a continuación, join() (convertir listas a cadenas de texto) y replace() (reemplazo de cadenas) también son útiles.
¡Por favor, domina de manera integral la manipulación de cadenas en Python!

📌 ¡Con esto termina la guía completa sobre split()!
¡Disfruta programando en Python mientras aprovechas split()! 🚀