Validierung der Python-Telefonnummer

Abid Ullah 10 Oktober 2023
  1. Validieren Sie Telefonnummern in Python
  2. Verwenden Sie die Phonenumbers-Bibliothek in Python
  3. Analysieren Sie Telefonnummern mit der Python-Bibliothek Phonenumbers
  4. Validieren Sie Telefonnummern mit der Methode is_possible_number()
  5. Validieren Sie Telefonnummern mit der Methode is_valid_number()
  6. Verwenden Sie die Methode description_for_number() in der Klasse Geocoder, um den Standort der Telefonnummer zu finden
  7. Verwenden Sie die Methode name_for_number() in der Klasse Carrier, um den Träger der Telefonnummer zu finden
  8. Validieren Sie Telefonnummern und erhalten Sie zusätzliche Informationen mit Python
Validierung der Python-Telefonnummer

Dieser Python-Artikel zeigt, wie wir Telefonnummern mit der Python-Bibliothek phonenumbers validieren können. Wir werden lernen, Telefonnummern mit Python zu validieren und sie dann für die Anzeige nach Region, Land, Kontinent und Netzbetreiber zu formatieren.

Wir beginnen mit einem einfachen Beispiel und gehen zu einem komplexen über. Also fangen wir an und lassen Python Telefonnummern validieren und formatieren.

Validieren Sie Telefonnummern in Python

Die Überprüfung und Validierung der Richtigkeit von Telefonnummern kann sehr schwierig sein. Das Format einer Telefonnummer kann sich je nach Land ändern.

Auch innerhalb ein und derselben Nation kann es erhebliche Unterschiede geben. Einige Länder verwenden denselben Ländercode, während andere mehrere Ländercodes verwenden.

Einige Länder verwenden sogar mehr als einmal denselben Ländercode.

Eine Abbildung in Googles libphonenumber-Repository auf GitHub zeigt, dass die Vereinigten Staaten von Amerika, Kanada und die karibischen Inseln alle dieselbe internationale Vorwahl von +1 verwenden.

Die Telefonnummern können aus dem Kosovo mit den Ländervorwahlen für Serbien, Slowenien oder Marokko angerufen werden. Dies sind nur einige Schwierigkeiten beim Identifizieren oder Validieren von Telefonnummern.

Auf den ersten Blick scheint es, als könne man mit RegEx die Ländervorwahl einer Telefonnummer validieren. Dies weist jedoch darauf hin, dass wir zur Validierung eines Ländercodes für jedes Land weltweit eine eindeutige RegEx-Regel erstellen müssen.

Darüber hinaus haben die Mobilfunkanbieter jeweils Richtlinien (z. B. dürfen bestimmte Ziffern nur in einem bestimmten Nummernkreis verwendet werden). Wir sehen, dass die Dinge das Potenzial haben, schnell außer Kontrolle zu geraten, was es für uns extrem schwierig machen würde, Telefonnummerneingaben selbst zu validieren.

Verwenden Sie die Phonenumbers-Bibliothek in Python

Wir haben Glück, denn eine Python-Bibliothek kann uns effektiv durch den Validierungsprozess führen. Diese Bibliothek wurde von Googles libphonenumber-Bibliothek abgeleitet, die auch für andere Programmiersprachen wie C++, Java und JavaScript verwendet werden kann.

Mit dieser Bibliothek wurde die Python-Bibliothek Phonenumbers erstellt.

Dieser Artikel zeigt uns, wie man mit Python eine Handynummer validiert.

Installieren Sie die Bibliothek Phonenumbers in Python

Die Validierung von Telefonnummern wird mit Python dank eines integrierten Moduls leicht gemacht. Dieses Modul wird als Modul Rufnummern bezeichnet.

Um das Modul nutzen zu können, müssen wir es zuerst installieren. Mit pip können wir dies tun:

pip install phonenumbers

Sobald das Modul installiert ist, können wir Telefonnummern mit Landesvorwahl validieren.

Nachdem alles eingerichtet ist, können wir die Bibliothek Telefonnummern erkunden.

Analysieren Sie Telefonnummern mit der Python-Bibliothek Phonenumbers

Die Telefonnummer ist mit ziemlicher Sicherheit eine Zeichenfolge, unabhängig davon, ob die Eingabe aus einem Webformular oder einer anderen Quelle stammt, z. B. Textextraktion (die später in diesem Handbuch behandelt wird). Es muss mit Telefonnummern geparst und dann in eine PhoneNumber-Instanz umgewandelt werden, bevor wir es für die Validierung und andere Zwecke verwenden können.

Importieren Sie die Bibliothek

Zuerst müssen wir die erforderlichen Bibliotheken importieren; wir werden Telefonnummern importieren. Wir müssen auch carrier, timezone und geocoder importieren.

Beispielcode:

import phonenumbers

Analysieren Sie die Telefonnummer

Dank der Methode parse() können wir nützliche Informationen aus der Telefonnummer extrahieren, die Folgendes umfasst:

Beispielcode:

import phonenumbers

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

Bei Verwendung der Funktion phonenumbers.parse() wird als Eingabe ein Telefonnummern-String benötigt. Als zusätzliche optionale Eingabe können wir die nationalen Informationen im ISO-Alpha-2-Format bereitstellen.

Denken Sie zum Beispiel an den folgenden Code:

Parse_number = phonenumbers.parse(My_number)

In der ISO-Alpha-2-Notation bezeichnet RO Rumänien. Wir können diese Seite verwenden, um die Alpha-2- und numerischen Ländercodes für jede Nation weltweit nachzuschlagen.

Sofern nicht unbedingt erforderlich, wird der ISO-Alpha-2-Ländercode in den meisten Fällen weggelassen.

Telefonnummern können mit phonenumbers.parse() auf allgemeine Probleme wie Länge, führende Nullen und Vorzeichen validiert werden. Denken Sie daran, dass diese Methode eine Ausnahme auslöst, wenn eine der erforderlichen Bedingungen nicht erfüllt ist.

Setzen Sie es immer in einen try/catch-Block in unserem Code.

Nachdem unsere Telefonnummer ordnungsgemäß verarbeitet wurde, können wir mit der Validierungsphase fortfahren.

Validieren Sie Telefonnummern mit der Methode is_possible_number()

Zwei Ansätze können verwendet werden, um eine Telefonnummer auf Phonenumbers zu validieren. Der Hauptunterschied zwischen diesen Ansätzen ist ihre jeweilige Geschwindigkeit und Genauigkeit.

Um dies näher zu erläutern, beginnen wir mit der Funktion is_possible_number().

Beispielcode:

import phonenumbers

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

Ausgang:

True

Das Programm erzeugt als Ausgabe den Wert True.

Validieren Sie Telefonnummern mit der Methode is_valid_number()

Jetzt verwenden wir dieselbe Nummer, aber dieses Mal überprüfen wir ihre Gültigkeit mit der Methode is_valid_number():

Beispielcode:

import phonenumbers

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

Ausgang:

False

Die Ausgabe wäre anders, obwohl die Eingabe gleich bliebe.

is_possible_number() errät die Gültigkeit der Telefonnummer, indem es ihre Länge überprüft, während die Methode is_valid_number() ihre Länge, Präfix und Region überprüft.

phonenumbers.is_possible_number() ist schneller als phonenumbers.is_valid_number() bei der Iteration über eine große Telefonnummernliste. Diese Ergebnisse sind, wie gezeigt, nicht immer genau.

Es ist hilfreich, lange Telefonnummern schnell zu eliminieren. Es ist riskant zu verwenden.

Verwenden Sie die Methode description_for_number() in der Klasse Geocoder, um den Standort der Telefonnummer zu finden

Eine Telefonnummer kann viele Details über ihren Besitzer preisgeben, von denen einige für unsere Forschung relevant sein könnten. Da der jeweilige Netzbetreiber, der einer Telefonnummer zugeordnet ist, ein Faktor für die Gesamtkosten des Produkts ist, möchten wir möglicherweise verschiedene Anwendungsprogrammierschnittstellen (APIs) oder API-Endpunkte verwenden.

Möglicherweise möchten wir unsere Werbebenachrichtigungen basierend auf der Zeitzone des Standorts unserer Kunden (Telefonnummern) senden, damit wir vermeiden können, ihnen mitten in der Nacht eine Nachricht zu senden. Es verhindert, dass wir sie versehentlich aufwecken.

Wir könnten auch Informationen über den Standort der Telefonnummer erhalten, um relevante Informationen zur Situation bereitzustellen. Die Bibliothek Rufnummern bietet den Benutzern Zugriff auf die erforderlichen Tools, um diese Anforderungen zu erfüllen.

Wir verwenden die Methode description_for_number(), die in der Klasse geocoder verfügbar ist, um mit dem Standort zu beginnen. Die Parameter sind eine geparste Telefonnummer und ein Kurzname für die Sprache.

Lassen Sie uns das mit der gefälschten Nummer versuchen, die wir zuvor verwendet haben.

Beispielcode:

import phonenumbers
from phonenumbers import geocoder

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

Ausgang:

This number is from: Pakistan

Verwenden Sie die Methode name_for_number() in der Klasse Carrier, um den Träger der Telefonnummer zu finden

Wir verwenden die Methode name_for_number() der Klasse carrier.

Beispielcode:

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"))

Die Ausgabe des Codes:

The carrier of the number is: Ufone

Validieren Sie Telefonnummern und erhalten Sie zusätzliche Informationen mit Python

Beispielcode:

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")
)

Ausgang:

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

So können wir feststellen, ob eine Zahl gültig ist. Wir sehen in der Ausgabe True, was zeigt, dass die im Python-Code verwendete Zahl korrekt ist.

Wir können auch den Träger der Nummer herausfinden. In unserem Fall ist es Ufone.

Neben dem Spediteur finden wir den Namen des Landes, des Kontinents und der Stadt. Laut der von uns verwendeten Nummer stammt die Nummer aus Asien, Pakistan und der Stadt Karatschi.

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