1 usuario conectado

Convertir a Snail Case. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada convertir_a_snail_case que tome una cadena de texto como entrada y la convierta a Snail Case. Snail Case es un estilo de escritura donde todas las palabras están en minúsculas y se separan con un guion bajo. La función debe manejar diferentes separadores de palabras (espacios, guiones, mayúsculas) y eliminar cualquier carácter no alfanumérico.



Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Convertir a Snail Case

📋 Copiar código

import re

def convertir_a_snail_case(texto):
  """
  Convierte una cadena de texto a Snail Case (minúsculas separadas por guion bajo).

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    La cadena convertida a Snail Case.
  """
  # Reemplazar caracteres no alfanuméricos con espacios
  texto_limpio = re.sub(r'[^a-zA-Z0-9\s]', '', texto)
  # Convertir mayúsculas a minúsculas y dividir por mayúsculas o espacios/guiones
  palabras = re.findall(r'[A-Z]?[a-z]+|[A-Z]+(?=[A-Z0-9]|\b)|[0-9]+', texto_limpio)
  # Unir las palabras con guion bajo y convertir a minúsculas
  snail_case = '_'.join(palabra.lower() for palabra in palabras)
  return snail_case

# Ejemplos de uso
texto1 = "Hola Mundo"
resultado1 = convertir_a_snail_case(texto1)
print(f"'{texto1}' en Snail Case: '{resultado1}'")

texto2 = "Texto-Con-Guiones"
resultado2 = convertir_a_snail_case(texto2)
print(f"'{texto2}' en Snail Case: '{resultado2}'")

texto3 = "TextoConMayusculas"
resultado3 = convertir_a_snail_case(texto3)
print(f"'{texto3}' en Snail Case: '{resultado3}'")

texto4 = "Texto Con Numeros 123"
resultado4 = convertir_a_snail_case(texto4)
print(f"'{texto4}' en Snail Case: '{resultado4}'")

texto5 = "TEXTO EN MAYUSCULAS"
resultado5 = convertir_a_snail_case(texto5)
print(f"'{texto5}' en Snail Case: '{resultado5}'")

texto6 = "Texto con caracteres!@# especiales"
resultado6 = convertir_a_snail_case(texto6)
print(f"'{texto6}' en Snail Case: '{resultado6}'")

texto7 = ""
resultado7 = convertir_a_snail_case(texto7)
print(f"'' en Snail Case: '{resultado7}'")

Explicación del Código:

  1. Importa el módulo re: Se utiliza para trabajar con expresiones regulares para la manipulación del texto.

  2. Función convertir_a_snail_case(texto):

    • Limpieza de caracteres no alfanuméricos:
      • texto_limpio = re.sub(r'[^a-zA-Z0-9\s]', '', texto): Reemplaza cualquier carácter que no sea una letra (mayúscula o minúscula), un número o un espacio en blanco con una cadena vacía, eliminándolos.
    • División en palabras:
      • palabras = re.findall(r'[A-Z]?[a-z]+|[A-Z]+(?=[A-Z0-9]|\b)|[0-9]+', texto_limpio): Utiliza re.findall() para encontrar todas las "palabras" en el texto limpio. La expresión regular busca:
        • Una letra mayúscula opcional seguida de una o más letras minúsculas ([A-Z]?[a-z]+).
        • Una o más letras mayúsculas seguidas de otra mayúscula, un número o un límite de palabra ([A-Z]+(?=[A-Z0-9]|\b)). Esto ayuda a separar acrónimos.
        • Uno o más números ([0-9]+).
    • Unión en Snail Case:
      • snail_case = '_'.join(palabra.lower() for palabra in palabras): Itera a través de la lista de palabras, convierte cada palabra a minúsculas using .lower(), y luego las une utilizando un guion bajo (_) como separador.
    • Devuelve la cadena resultante en Snail Case.

Ejemplos de Uso:

Los ejemplos muestran cómo la función convierte diferentes cadenas de texto a Snail Case, manejando mayúsculas, minúsculas, guiones, espacios y eliminando caracteres especiales.