파이썬 전화번호 검증

Abid Ullah 2023년10월10일
  1. Python에서 전화번호 확인
  2. Python에서 Phonenumbers 라이브러리 사용
  3. Python Phonenumbers 라이브러리로 전화번호 구문 분석
  4. is_possible_number() 메서드를 사용하여 전화번호 확인
  5. is_valid_number() 메서드를 사용하여 전화번호 확인
  6. Geocoder 클래스의 description_for_number() 메소드를 사용하여 전화번호 위치 찾기
  7. Carrier 클래스의 name_for_number() 메소드를 사용하여 전화번호 캐리어 찾기
  8. Python을 사용하여 전화번호 확인 및 추가 정보 얻기
파이썬 전화번호 검증

이 Python 문서에서는 Python의 phonenumbers 라이브러리를 사용하여 전화 번호를 확인하는 방법을 보여줍니다. Python을 사용하여 전화 번호를 확인한 다음 지역, 국가, 대륙 및 이동 통신사에 따라 표시되도록 형식을 지정하는 방법을 배웁니다.

간단한 예제로 시작하여 복잡한 예제로 이동합니다. 이제 시작하여 Python이 전화 번호의 유효성을 검사하고 형식을 지정하도록 합시다.

Python에서 전화번호 확인

전화 번호의 정확성을 확인하고 검증하는 것은 매우 어려울 수 있습니다. 전화번호 형식은 국가에 따라 다를 수 있습니다.

같은 국가 내에서도 상당한 차이가 있을 수 있습니다. 일부 국가는 동일한 국가 코드를 사용하고 다른 국가는 여러 국가 코드를 사용합니다.

일부 국가에서는 동일한 국가 코드를 두 번 이상 사용하기도 합니다.

GitHub의 Google libphonenumber 리포지토리에 있는 그림은 미국, 캐나다 및 카리브해 섬이 모두 +1이라는 동일한 국제 전화 코드를 사용함을 보여줍니다.

전화번호는 세르비아, 슬로베니아 또는 모로코의 국가 코드를 사용하여 코소보에서 전화를 걸 수 있습니다. 이는 전화번호를 식별하거나 검증할 때 발생하는 몇 가지 어려움에 불과합니다.

언뜻 보기에 RegEx를 사용하여 전화 번호의 국가 코드를 확인할 수 있는 것처럼 보입니다. 그러나 이는 국가 코드를 확인하려면 전 세계 모든 국가에 대해 고유한 RegEx 규칙을 생성해야 함을 나타냅니다.

또한 이동통신사마다 가이드라인이 있습니다(예: 특정 숫자는 특정 범위의 숫자에서만 사용할 수 있음). 상황이 빠르게 통제 불능 상태가 될 가능성이 있음을 알 수 있으며, 이로 인해 자체적으로 전화 번호 입력을 확인하기가 매우 어려워집니다.

Python에서 Phonenumbers 라이브러리 사용

Python 라이브러리가 유효성 검사 프로세스를 효과적으로 안내할 수 있기 때문에 우리는 운이 좋습니다. 이 라이브러리는 C++, Java 및 JavaScript와 같은 다른 프로그래밍 언어에도 사용할 수 있는 Google의 libphonenumber 라이브러리에서 파생되었습니다.

Python Phonenumbers 라이브러리는 이 라이브러리를 사용하여 생성되었습니다.

이 기사에서는 Python을 사용하여 휴대폰 번호를 확인하는 방법을 보여줍니다.

Python에 Phonenumbers 라이브러리 설치

통합 모듈 덕분에 Python을 사용하면 전화번호를 쉽게 확인할 수 있습니다. 이 모듈을 phonenumbers 모듈이라고 합니다.

모듈을 사용하려면 먼저 모듈을 설치해야 합니다. pip를 사용하여 다음을 수행할 수 있습니다.

pip install phonenumbers

모듈이 설치되면 국가 코드 전화 번호를 확인할 수 있습니다.

이제 모든 것이 설정되었으므로 Phonenumbers 라이브러리를 탐색할 수 있습니다.

Python Phonenumbers 라이브러리로 전화번호 구문 분석

전화번호는 입력이 웹 양식에서 오는지 또는 텍스트 추출(이 가이드의 뒷부분에서 다룰 예정)과 같은 다른 소스에서 오는지에 관계없이 거의 확실하게 문자열입니다. 유효성 검사 및 기타 목적으로 사용하기 전에 전화 번호로 구문 분석한 다음 PhoneNumber 인스턴스로 변환해야 합니다.

라이브러리 가져오기

먼저 필요한 라이브러리를 가져와야 합니다. phonenumbers를 가져올 것입니다. 또한 carrier, timezonegeocoder를 가져와야 합니다.

예제 코드:

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()를 사용하여 길이, 선행 0 및 기호와 같은 일반적인 문제에 대해 전화 번호를 확인할 수 있습니다. 필수 조건 중 하나라도 충족되지 않으면 이 메서드는 예외를 throw한다는 점을 기억하는 것이 중요합니다.

항상 코드의 try/catch 블록에 넣습니다.

이제 전화번호가 적절하게 처리되었으므로 확인 단계를 진행할 수 있습니다.

is_possible_number() 메서드를 사용하여 전화번호 확인

Phonenumbers에서 전화 번호를 확인하는 데 두 가지 접근 방식을 사용할 수 있습니다. 이러한 접근 방식의 주요 차이점은 각각의 속도와 정확도 수준입니다.

더 자세히 설명하기 위해 is_possible_number() 함수부터 시작하겠습니다.

예제 코드:

import phonenumbers

My_number = "+92333920000"
Parse_number = phonenumbers.parse(My_number)
print(phonenumbers.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입니다.

캐리어와 함께 국가, 대륙 및 도시의 이름을 찾을 수 있습니다. 우리가 사용한 번호에 따르면 아시아, 파키스탄, 카라치 시에서 온 번호입니다.

작가: 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