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:
-
import re
:
- Importa el módulo
re
para
trabajar con expresiones regulares.
-
def
formatear_telefono_es(telefono):
:
- Define una función llamada
formatear_telefono_es
que toma una cadena de texto (telefono
)
como entrada.
-
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.
-
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).
-
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).
-
else:
:
- Si el número de dígitos no es 9.
-
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.