Python 電話番号検証
- Python で電話番号を検証する
-
Python で
Phonenumbers
ライブラリを使用する -
Python
Phonenumbers
ライブラリを使用して電話番号を解析する -
is_possible_number()
メソッドを使用して電話番号を検証する -
is_valid_number()
メソッドを使用して電話番号を検証する -
Geocoder
クラスのdescription_for_number()
メソッドを使用して電話番号の場所を見つける -
Carrier
クラスのname_for_number()
メソッドを使用して、電話番号のキャリアを検索する - Python を使用して電話番号を検証し、追加情報を取得する
この Python の記事では、Python の phonenumbers
ライブラリを使用して電話番号を検証する方法を示します。 Python を使用して電話番号を検証し、地域、国、大陸、キャリアに応じて表示するようにフォーマットする方法を学習します。
簡単な例から始めて、複雑な例に移ります。 では、Python に電話番号の検証とフォーマットを任せてみましょう。
Python で電話番号を検証する
電話番号の正確性を検証および検証することは、非常に困難な場合があります。 電話番号の形式は、国によって異なる場合があります。
同じ国内でも、かなりの違いがあるかもしれません。 同じ国コードを使用する国もあれば、複数の国コードを使用する国もあります。
一部の国では、同じ国コードを複数回使用することさえあります。
GitHub の Google の libphonenumber
リポジトリにある図は、アメリカ合衆国、カナダ、およびカリブ海の島々がすべて +1 の同じ国際ダイヤル コードを使用していることを示しています。
電話番号は、セルビア、スロベニア、またはモロッコの国コードを使用して、コソボから呼び出すことができます。 これらは、電話番号を識別または検証する際の問題のほんの一部です。
一見すると、RegEx
を使用して電話番号の国コードを検証できるように見えます。 ただし、これは、国のコードを検証するには、世界中のすべての国に対して一意の RegEx
ルールを作成する必要があることを示しています。
また、携帯電話会社ごとにガイドラインがあります(たとえば、特定の数字は特定の範囲の数字でしか使用できないなど)。 物事が急速に制御不能になる可能性があることがわかります。これにより、電話番号の入力を自分で検証することが非常に困難になります。
Python で Phonenumbers
ライブラリを使用する
Python ライブラリが検証プロセスを効果的にガイドしてくれるので、私たちは幸運です。 このライブラリは Google の libphonenumber
ライブラリから派生したもので、C++、Java、JavaScript などの他のプログラミング言語にも使用できます。
Python Phonenumbers
ライブラリは、このライブラリを使用して作成されました。
この記事では、Python を使用して携帯電話番号を検証する方法を示します。
Phonenumbers
ライブラリを Python にインストールする
統合モジュールのおかげで、Python を使用すると電話番号の検証が簡単になります。 このモジュールは phonenumbers
モジュールと呼ばれます。
モジュールを利用するには、まずモジュールをインストールする必要があります。 pip
を使用すると、次のことができます。
pip install phonenumbers
モジュールがインストールされると、国コードの電話番号を検証できます。
すべての設定が完了したので、Phonenumbers
ライブラリを調べることができます。
Python Phonenumbers
ライブラリを使用して電話番号を解析する
電話番号は、入力が Web フォームからのものか、テキスト抽出 (このガイドの後半で説明します) などの他のソースからのものかに関係なく、ほぼ確実に文字列になります。 検証やその他の目的で使用する前に、電話番号で解析し、PhoneNumber
インスタンスに変換する必要があります。
ライブラリをインポートする
まず、必要なライブラリをインポートする必要があります。 電話番号
をインポートします。 carrier
、timezone
、および geocoder
もインポートする必要があります。
コード例:
import phonenumbers
電話番号を解析する
parse()
メソッドのおかげで、電話番号から有用な情報を抽出できます。これには次のものが含まれます。
コード例:
import phonenumbers
My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
phonenumbers.parse()
関数を使用する場合、入力として電話番号文字列が必要です。 追加のオプション入力として、国別情報を ISO Alpha-2 形式で提供できます。
たとえば、次のコードを思い出してください。
Parse_number = phonenumbers.parse(My_number)
ISO Alpha-2 表記では、RO
はルーマニアを表します。 このページを使用して、世界中のすべての国の Alpha-2 および数字の国コードを検索する場合があります。
必須でない限り、ISO Alpha-2 国コードはほとんどの場合省略されます。
phonenumbers.parse()
を使用して、長さ、先行ゼロ、符号などの一般的な問題について電話番号を検証できます。 必要な条件のいずれかが満たされない場合、このメソッドは例外をスローすることに注意してください。
常にコードの try/catch
ブロックに入れます。
電話番号が適切に処理されたので、検証フェーズに進むことができます。
is_possible_number()
メソッドを使用して電話番号を検証する
Phonenumbers
で電話番号を検証するには、2つの方法を使用できます。 これらのアプローチの主な違いは、それぞれの速度と精度のレベルです。
これをさらに説明するために、is_possible_number()
関数から始めましょう。
コード例:
電話番号をインポートする
マイナンバー = "+92333920000"
parse_number = phonenumbers.parse(マイナンバー)
print(電話番号.is_possible_number(Parse_number))
出力:
True
プログラムは、出力として True
の値を生成します。
is_valid_number()
メソッドを使用して電話番号を検証する
今度は同じ番号を使用しますが、今回は is_valid_number()
メソッドを使用してその有効性を確認します。
コード例:
import phonenumbers
My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.is_valid_number(Parse_number))
出力:
False
インプットが同じでも、アウトプットは違う。
is_possible_number()
は、電話番号の長さをチェックして有効性を推測しますが、is_valid_number()
メソッドは、その長さ、プレフィックス、および地域をチェックします。
phonenumbers.is_possible_number()
は、phonenumbers.is_valid_number()
よりも大きな電話番号リストの反復処理が高速です。 示されているように、これらの結果は常に正確であるとは限りません。
長い電話番号をすばやく削除すると便利です。 使用するのは危険です。
Geocoder
クラスの description_for_number()
メソッドを使用して電話番号の場所を見つける
電話番号は、その所有者に関する多くの詳細を明らかにする可能性があり、その一部は 我々 の調査に関連している可能性があります。 電話番号に関連付けられた特定のキャリアは、製品の全体的なコストの要因であるため、さまざまなアプリケーション プログラミング インターフェイス (API) または API エンドポイントを使用する必要がある場合があります。
真夜中にメッセージを送信することを避けることができるように、顧客 (電話番号) の場所のタイムゾーンに基づいてプロモーション通知を送信したい場合があります。 誤って目を覚ますのを防ぎます。
電話番号の場所に関する情報を取得して、状況に関連する情報を提供することもできます。 Phonenumbers
ライブラリは、ユーザーがこれらの要件を満たすために必要なツールにアクセスできるようにします。
geocoder
クラスで利用可能な description_for_number()
メソッドを使用して、場所から始めます。 パラメータは、解析された電話番号と言語の短縮名です。
以前使っていた偽の番号で試してみましょう。
コード例:
import phonenumbers
from phonenumbers import geocoder
My_number = phonenumbers.parse("+92333920000")
print("This number is from: " + geocoder.description_for_number(My_number, "en"))
出力:
This number is from: Pakistan
Carrier
クラスの name_for_number()
メソッドを使用して、電話番号のキャリアを検索する
carrier
クラスにあるメソッド name_for_number()
を使用します。
コード例:
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"))
コードの出力:
The carrier of the number is: Ufone
Python を使用して電話番号を検証し、追加情報を取得する
コード例:
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")
)
出力:
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
これは、数値が有効かどうかを判断する方法です。 出力に True
が表示されます。これは、Python コードで使用されている数値が正しいことを示しています。
番号のキャリアを見つけることもできます。 私たちの場合、それはUfone
です。
キャリアとともに、国、大陸、都市の名前を見つけることができます。 私たちが使用した番号によると、その番号はアジア、パキスタン、およびカラチ市からのものです。
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