Validación del número de teléfono de Python

Abid Ullah 10 octubre 2023
  1. Validar números de teléfono en Python
  2. Use la biblioteca Phonenumbers en Python
  3. Analizar números de teléfono con la biblioteca Phonenumbers de Python
  4. Validar números de teléfono usando el método is_possible_number()
  5. Validar números de teléfono usando el método is_valid_number()
  6. Use el método description_for_number() en la clase Geocoder para encontrar la ubicación del número de teléfono
  7. Use el método name_for_number() en la clase Carrier para encontrar el número de teléfono Carrier
  8. Valide números de teléfono y obtenga información adicional usando Python
Validación del número de teléfono de Python

Este artículo de Python mostrará cómo podemos validar números de teléfono utilizando la biblioteca de números de teléfono de Python. Aprenderemos a usar Python para validar números de teléfono y luego formatearlos para mostrarlos según la región, el país, el continente y el operador.

Comenzaremos con un ejemplo simple y pasaremos a uno complejo. Entonces, comencemos y dejemos que Python valide y formatee los números de teléfono.

Validar números de teléfono en Python

Verificar y validar la exactitud de los números de teléfono puede ser muy desafiante. El formato de un número de teléfono puede cambiar dependiendo de nuestro país.

Incluso dentro de la misma nación, puede haber diferencias significativas. Algunos países usan el mismo código de país, mientras que otros usan varios códigos de país.

Algunos países incluso usan el mismo código de país más de una vez.

Una ilustración en el repositorio libphonenumber de Google en GitHub demuestra que los Estados Unidos de América, Canadá y las islas del Caribe usan el mismo código de marcación internacional de +1.

Se puede llamar a los números de teléfono desde Kosovo utilizando los códigos de país de Serbia, Eslovenia o Marruecos. Estas son solo algunas dificultades al identificar o validar números de teléfono.

A primera vista, parece que uno puede usar RegEx para validar el código de país de un número de teléfono. Sin embargo, esto indica que para validar el código de un país, debemos crear una regla RegEx única para cada país del mundo.

Además, cada operador de telefonía móvil tiene pautas (por ejemplo, ciertos dígitos solo se pueden usar en un rango específico de números). Podemos ver que las cosas tienen el potencial de salirse de control rápidamente, lo que nos dificultaría enormemente validar las entradas de números de teléfono por nuestra cuenta.

Use la biblioteca Phonenumbers en Python

Tenemos suerte porque una biblioteca de Python puede guiarnos de manera efectiva a través del proceso de validación. Esta biblioteca se derivó de la biblioteca libphonenumber de Google, que también se puede utilizar para otros lenguajes de programación como C++, Java y JavaScript.

La biblioteca Phonenumbers de Python se creó utilizando esta biblioteca.

Este artículo nos mostrará cómo usar Python para validar un número de teléfono móvil.

Instale la biblioteca Phonenumbers en Python

La validación de números de teléfono es fácil con Python gracias a un módulo integrado. Este módulo se conoce como el módulo números de teléfono.

Para hacer uso del módulo, primero debemos instalarlo. Usando pip, podemos hacer esto:

pip install phonenumbers

Una vez que el módulo está instalado, podemos validar los números de teléfono del código de país.

Ahora que todo se ha configurado, podemos explorar la biblioteca Números de teléfono.

Analizar números de teléfono con la biblioteca Phonenumbers de Python

Es casi seguro que el número de teléfono sea una cadena, independientemente de si la entrada proviene de un formulario web o de alguna otra fuente, como la extracción de texto (que se tratará más adelante en esta guía). Debe analizarse con números de teléfono y luego convertirse en una instancia de PhoneNumber antes de que podamos usarlo para validación y otros fines.

Importar la biblioteca

Primero, necesitamos importar las bibliotecas requeridas; importaremos números de teléfono. También necesitaremos importar el carrier, timezone y geocoder.

Código de ejemplo:

import phonenumbers

Analizar el número de teléfono

Podemos extraer información útil del número de teléfono gracias al método parse(), que incluye lo siguiente:

Código de ejemplo:

import phonenumbers

My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)

Se necesita una cadena de número de teléfono como entrada cuando se utiliza la función phonenumbers.parse(). Podemos proporcionar la información nacional en formato ISO Alpha-2 como entrada opcional adicional.

Tenga en cuenta, por ejemplo, el siguiente fragmento de código:

Parse_number = phonenumbers.parse(My_number)

En la notación ISO Alpha-2, RO denota Rumania. Podemos usar esta página para buscar los códigos alfa-2 y numéricos de los países de cada nación en todo el mundo.

A menos que sea esencial, el código de país ISO Alpha-2 se omitirá en la mayoría de los casos.

Los números de teléfono se pueden validar para problemas comunes como la longitud, los ceros a la izquierda y los signos usando phonenumbers.parse(). Es importante recordar que si alguna de las condiciones requeridas no se cumple, este método generará una excepción.

Póngalo siempre en un bloque try/catch en nuestro código.

Ahora que nuestro número de teléfono ha sido debidamente procesado, podemos pasar a la fase de validación.

Validar números de teléfono usando el método is_possible_number()

Se pueden utilizar dos enfoques para validar un número de teléfono en Phonenumbers. La principal distinción entre estos enfoques son sus respectivos niveles de velocidad y precisión.

Para explicar esto con más detalle, comencemos con la función is_possible_number().

Código de ejemplo:

import phonenumbers

My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.is_possible_number(Parse_number))

Producción :

True

El programa producirá un valor de True como salida.

Validar números de teléfono usando el método is_valid_number()

Ahora, usaremos el mismo número, pero esta vez comprobaremos su validez usando el método is_valid_number():

Código de ejemplo:

import phonenumbers

My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.is_valid_number(Parse_number))

Producción :

False

La salida sería diferente aunque la entrada siguiera siendo la misma.

is_possible_number() adivina la validez del número de teléfono comprobando su longitud, mientras que el método is_valid_number() comprueba su longitud, prefijo y región.

phonenumbers.is_possible_number() es más rápido que phonenumbers.is_valid_number() al iterar sobre una lista grande de números de teléfono. Estos resultados no siempre son precisos, como se muestra.

Es útil eliminar rápidamente los números de teléfono largos. Es arriesgado de usar.

Use el método description_for_number() en la clase Geocoder para encontrar la ubicación del número de teléfono

Un número de teléfono puede revelar muchos detalles sobre su propietario, algunos de los cuales pueden ser relevantes para nuestra investigación. Debido a que el operador particular asociado con un número de teléfono es un factor en el costo total del producto, es posible que deseemos utilizar varias interfaces de programación de aplicaciones (API) o puntos finales de API.

Es posible que deseemos enviar nuestras notificaciones de promoción en función de la zona horaria de la ubicación de nuestros clientes (números de teléfono) para evitar enviarles un mensaje en medio de la noche. Evitará que los despertemos sin querer.

También podríamos obtener información sobre la ubicación del número de teléfono para proporcionar información pertinente a la situación. La biblioteca Phonenumbers brinda a los usuarios acceso a las herramientas necesarias para satisfacer estos requisitos.

Usaremos el método description_for_number() disponible en la clase geocoder para comenzar con la ubicación. Los parámetros son un número de teléfono que se ha analizado y un nombre corto para el idioma.

Intentemos esto con el número falso que estábamos usando antes.

Código de ejemplo:

import phonenumbers
from phonenumbers import geocoder

My_number = phonenumbers.parse("+92333920000")
print("This number is from: " + geocoder.description_for_number(My_number, "en"))

Producción :

This number is from: Pakistan

Use el método name_for_number() en la clase Carrier para encontrar el número de teléfono Carrier

Usaremos el método name_for_number() que se encuentra en la clase carrier.

Código de ejemplo:

import phonenumbers
from phonenumbers import carrier

My_number = phonenumbers.parse("+92333920000")
print("The carrier of the number is: " + carrier.name_for_number(My_number, "en"))

La salida del código:

The carrier of the number is: Ufone

Valide números de teléfono y obtenga información adicional usando Python

Código de ejemplo:

import phonenumbers
from phonenumbers import carrier, timezone, geocoder

my_number = phonenumbers.parse("+92333920000", "GB")
print((phonenumbers.is_valid_number(my_number)))
print("The carrier of the number is: " + carrier.name_for_number(my_number, "en"))
print("The content and the city of the number are:")
print(timezone.time_zones_for_number(my_number))
print(
    "The country this number belongs to is: "
    + geocoder.description_for_number(my_number, "en")
)

Producción :

True
The carrier of the number is: Ufone
The content and the city of the number are:
('Asia/Karachi',)
The country this number belongs to is: Pakistan

Así es como podemos determinar si un número es válido. Vemos True en la salida, lo que muestra que el número utilizado en el código de Python es correcto.

También podemos averiguar el operador del número. En nuestro caso, se trata de Ufone.

Junto al transportista podemos encontrar el nombre del país, continente y ciudad. Según el número que hemos utilizado, el número es de Asia, Pakistán y la ciudad de Karachi.

Autor: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn