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.