Explicación detallada de las funciones strip() y split() en Python

La función strip() sirve para eliminar caracteres, mientras que split() divide una cadena en partes. strip() puede suprimir caracteres específicos de los extremos de una cadena, y split() fragmanta la cadena según un delimitador determinado.

1. Función strip() en Python

La función strip() tiene tres variantes principales:

  • strip(): Elimina caracteres de ambos extremos de la cadena
  • lstrip(): Elimina caracteres solo del inicio de la cadena
  • rstrip(): Elimina caracteres solo del final de la cadena

Cuando no se especifican caracteres para eliminar, strip() elimina por defecto los espacios en blanco (incluyendo '\n', '\r', '\t', ' ').

>>> texto = '     456'
>>> texto.strip()
'456'
>>> texto='\t\tejemplo'
>>> texto.strip()
'ejemplo'
>>> texto = 'contenido\r\n'
>>> texto.strip()
'contenido'

Si se especifica una secuencia de caracteres, se eliminarán aquellos presentes en los extremos:

>>> dato = 'xyz123abc'
>>> dato.strip('yxz')
'123abc'
>>> dato.strip('xyz')
'123abc'

2. Función split() en Python

En Python no existe un tipo de dato "carácter", solo cadenas. Un carácter es simplemente una cadena de lnogitud 1.

(1) Dividir por un carácter específico, como '.':

>>> dominio = 'www.ejemplo.dom'
>>> print(dominio)
www.ejemplo.dom
>>> partes = dominio.split('.')
>>> print(partes)
['www', 'ejemplo', 'dom']

(2) Dividir por un carácter limitando el número de divisiones:

>>> partes_limitadas = dominio.split('.', 1)
>>> print(partes_limitadas)
['www', 'ejemplo.dom']

(3) Acceso a elementos resultantes de la división:

>>> primera_parte = dominio.split('.')[0]
>>> print(primera_parte)
www

La división devuelve una lista, y podemos usar indexación o slicing:

>>> reverso = dominio.split('.')[::-1]
>>> print(reverso)
['dom', 'ejemplo', 'www']
>>> ordenado = dominio.split('.')[::]
>>> print(ordenado)
['www', 'ejemplo', 'dom']

(4) Aplicación práctica: conversión entre direccoines IP y números:

# IP a número
ip_a_numero = lambda x: sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])
print(ip_a_numero('192.168.0.1'))  # Salida: 3232235521

# Número a IP
numero_a_ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])
print(numero_a_ip(3232235521))  # Salida: '192.168.0.1'

Alternativamente, usando módulos del sistema para conversiones IP:

import socket
import struct

# Número a dirección IP
num_ip = 123456789
direccion_ip = socket.inet_ntoa(struct.pack('I', socket.htonl(num_ip)))
print(direccion_ip)  # Salida: '7.91.205.21'

# Dirección IP a número
ip_str = "255.255.255.255"
numero_ip = socket.ntohl(struct.unpack("I", socket.inet_aton(ip_str))[0])
print(numero_ip)  # Salida: 4294967295

Etiquetas: Python cadenas strip split manipulación de texto

Publicado el 6-20 17:44