1 usuario conectado

Formatear teléfono en español. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada formatear_telefono_es que tome una cadena de texto que representa un número de teléfono español como entrada y lo formatee al formato +34-XXX-XXX-XXX. La función debe intentar extraer los dígitos del número y aplicar el formato, ignorando otros caracteres. Si no se pueden extraer suficientes dígitos, debería indicar un error.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Formatear teléfono en español

📋 Copiar código


import re

def formatear_telefono_es(telefono):
  """
  Formatea un número de teléfono español a +34-XXX-XXX-XXX.

  Args:
    telefono: La cadena de texto con el número de teléfono.

  Returns:
    El número de teléfono formateado (str) o un mensaje de error.
  """
  digitos = re.sub(r'\D', '', telefono)  # Elimina todos los no-dígitos
  if len(digitos) == 9:
    return f"+34-{digitos[:3]}-{digitos[3:6]}-{digitos[6:]}"
  else:
    return "Formato de número de teléfono español inválido (debe tener 9 dígitos)."

# Ejemplos de uso
telefono1 = "612345678"
resultado1 = formatear_telefono_es(telefono1)
print(f"'{telefono1}' formateado: {resultado1}")

telefono2 = "+34612345678"
resultado2 = formatear_telefono_es(telefono2)
print(f"'{telefono2}' formateado: {resultado2}")

telefono3 = "612-345-678"
resultado3 = formatear_telefono_es(telefono3)
print(f"'{telefono3}' formateado: {resultado3}")

telefono4 = "(+34) 612345678"
resultado4 = formatear_telefono_es(telefono4)
print(f"'{telefono4}' formateado: {resultado4}")

telefono5 = "12345678"
resultado5 = formatear_telefono_es(telefono5)
print(f"'{telefono5}' formateado: {resultado5}")

telefono6 = "61234567890"
resultado6 = formatear_telefono_es(telefono6)
print(f"'{telefono6}' formateado: {resultado6}")

telefono7 = "Hola"
resultado7 = formatear_telefono_es(telefono7)
print(f"'{telefono7}' formateado: {resultado7}")

Explicación del Código:

  1. import re:

    • Importa el módulo re para trabajar con expresiones regulares.
  2. def formatear_telefono_es(telefono)::

    • Define una función llamada formatear_telefono_es que toma una cadena de texto (telefono) como entrada.
  3. digitos = re.sub(r'\D', '', telefono):

    • Utiliza una expresión regular \D (que coincide con cualquier carácter que no sea un dígito) para eliminar todos los caracteres no numéricos de la cadena telefono. El resultado es una cadena que contiene solo los dígitos del número.
  4. if len(digitos) == 9::

    • Verifica si la longitud de la cadena digitos es exactamente 9, que es la longitud esperada para un número de teléfono móvil español (sin el prefijo +34).
  5. return f"+34-{digitos[:3]}-{digitos[3:6]}-{digitos[6:]}":

    • Si hay 9 dígitos, utiliza un f-string para formatear la cadena al formato deseado:
      • +34-: Añade el prefijo internacional para España.
      • digitos[:3]: Toma los primeros 3 dígitos.
      • digitos[3:6]: Toma los siguientes 3 dígitos (desde el índice 3 hasta el 5).
      • digitos[6:]: Toma los últimos 3 dígitos (desde el índice 6 hasta el final).
  6. else::

    • Si el número de dígitos no es 9.
  7. return "Formato de número de teléfono español inválido (debe tener 9 dígitos).":

    • Devuelve un mensaje de error indicando que el formato del número de teléfono no es válido según la expectativa de 9 dígitos.

Ejemplos de Uso:

Los ejemplos muestran cómo la función intenta formatear diferentes cadenas de teléfono. Si la cadena contiene 9 dígitos (después de eliminar los caracteres no numéricos), se aplica el formato. Si no, se devuelve un mensaje de error. Ten en cuenta que este es un formato muy básico y no considera números fijos u otras variaciones.