Python 中的電話號碼模組


簡介

Python 的 phonenumbers 包簡化了電話號碼的解析、格式化和驗證。該模組基於 Google 的 libphonenumber 包,為開發人員提供了一套強大的工具,以標準化的方式處理電話號碼。phonenumbers 模組可以從使用者輸入中提取電話號碼,驗證其準確性,並根據國際標準對其進行格式化。

在這篇文章中,我們將探討 phonenumbers 模組提供的眾多功能和特性,並深入探討實際應用,展示如何使用它們。我們將探索該模組的功能,並解釋它如何簡化 Python 應用程式中的電話號碼處理,從解析和驗證到格式化和提取關鍵資訊。

Python 中的 Phonenumbers 模組實現

安裝和匯入

在探索 phonenumbers 模組的功能之前,我們必須將其安裝並載入到我們的 Python 環境中。可以使用 Python 的包安裝程式 pip 來安裝該模組。安裝完成後,我們可以使用 import 語句將 phonenumbers 模組新增到我們的互動式 Python 會話或指令碼中。

示例

pip install phonenumbers import 
phonenumbers 

輸出

Looking 	in 	indexes: 	https://pypi.org/simple, 	https://us-python.pkg.dev/colabwheels/public/simple/ 
Collecting phonenumbers 
  Downloading phonenumbers-8.13.11-py2.py3-none-any.whl (2.6 MB) 
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6/2.6 
MB 37.6 MB/s eta 0:00:00 
Installing collected packages: phonenumbers 
Successfully installed phonenumbers-8.13.11 

解析電話號碼

phonenumbers 模組的主要任務之一是從各種字串表示形式中解析電話號碼。無論電話號碼是否包含國家程式碼,是否包含破折號或空格,模組提供的 parse() 函式都可以智慧地解釋和解析電話號碼。解析後的電話號碼物件包含有價值的資訊,例如國家程式碼、國家號碼、分機號等等。

示例

import phonenumbers 
 
# Parse a phone number number = "+14155552671"
 parsed_number = phonenumbers.parse(number, 
None) 
 
# Accessing parsed information 
print(parsed_number.country_code)  # Output: 1 
print(parsed_number.national_number)  # Output:4155552671 
print(parsed_number.extension)  # Output: None 

輸出

1 
4155552671 
None 

電話號碼驗證

驗證電話號碼對於確保其符合正確的格式並可能可達至關重要。phonenumbers 模組提供各種驗證方法來檢查電話號碼是否有效或可能有效。is_valid_number() 函式根據電話號碼的語法和結構確定其是否有效。另一方面,is_possible_number() 函式檢查電話號碼是否可能有效,這意味著它具有有效的國家程式碼,但不一定符合有效號碼的所有規則。

示例

import phonenumbers 
 
# Validate phone numbers 
valid_number = "+14155552671" invalid_number 
= "+1234567890" 
 
print(phonenumbers.is_valid_number(phonenumbers.parse(valid_number)))  # Output: True 
print(phonenumbers.is_valid_number(phonenumbers.parse(invalid_number)))  # Output: False 
 
print(phonenumbers.is_possible_number(phonenumbers.parse(valid_number))) 	 	
# Output: True 
print(phonenumbers.is_possible_number(phonenumbers.parse(invalid_number))) 	 	# 
Output: True 

輸出

True 
False 
True 
False 

格式化電話號碼

在向用戶顯示或將其儲存在資料庫中之前,以一致且統一的方式格式化電話號碼至關重要。為了確保電話號碼以適當的方式顯示,phonenumbers 模組提供了許多格式化選項。

您可以使用 format_number() 方法根據多種樣式(包括國際格式、國家格式和 E.164 格式)格式化解析後的電話號碼。國家格式僅提供不帶國家程式碼的國家顯著號碼,而國際格式還包括國家程式碼。E.164 格式包含國家程式碼和國家顯著號碼,它是一種標準化格式,不使用任何格式化符號。

示例

import phonenumbers 
 
# Format phone numbers parsed_number = phonenumbers.parse("+14155552671") 
 
# Format as international format print(phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.INTERNATIONAL)) 
 
# Format as national format 
print(phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL)) 
 
# Format as E.164 format 
print(phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.E164)) 

輸出

+1 415-555-2671 
(415) 555-2671 
+14155552671 

從電話號碼中提取資訊

您可以使用 phonenumbers 模組從電話號碼中收集重要資料。例如,您可以使用 geocoder 模組(phonenumbers 的子模組)來確定電話號碼的位置。當您需要了解電話號碼屬於哪個國家、地區或運營商時,此功能在應用程式中非常有用。

示例

import phonenumbers from 
phonenumbers import geocoder 
 
# Parse a phone number number = "+14155552671" parsed_number = phonenumbers.parse(number, 
None) 
 
# Retrieve the geographic information location = geocoder.description_for_number(parsed_number, "en") 
print(location)  # Output: United States 

輸出

San Francisco, CA 

高階用法:地理編碼和運營商查詢

藉助 phonenumbers 模組的高階功能(例如運營商查詢和地理編碼),您可以瞭解有關電話號碼的更多資訊。geocoder 子模組提供工具來查詢與電話號碼關聯的國家、地區和運營商。

可以使用 carrier 子模組的功能查詢電話號碼的運營商或服務提供商。需要運營商特定功能或必須驗證運營商資料的應用程式可能會發現此功能很有用。

示例

import phonenumbers from phonenumbers 
import geocoder, carrier 
 
# Parse a phone number number = "+14155552671"
 parsed_number = phonenumbers.parse(number,None) 
 
# Retrieve the carrier information carrier_name = carrier.name_for_number(parsed_number, "en") 
print(carrier_name)  # Output: AT&T Mobility 
 
# Retrieve the geographic information location = geocoder.description_for_number(parsed_number, "en")
 print(location)  # Output: United States 

輸出

‘***’ # cannot be disclosed 
San Francisco, CA 

處理國際電話號碼

phonenumbers 模組還提供處理國際電話號碼的功能。它允許您確定電話號碼的區域或國家,並根據該區域的約定對其進行格式化。當處理來自不同國家的電話號碼時,這尤其有用。

示例

import phonenumbers 
 
# Parse a phone number number = "+353876543210" 
parsed_number = phonenumbers.parse(number, None) 
 
# Get the region information 
region = phonenumbers.region_code_for_number(parsed_number) 
print(region)  # 

輸出

IE

自定義和本地化

Python 的 phonenumbers 模組提供了自定義選項以滿足獨特的需求。透過建立新資訊或匯入特定位置的元資料,您可以更改模組的行為方式。這使您可以管理標準元資料可能無法處理的電話號碼。透過提供其他資訊,您可以擴充套件模組的功能以支援特殊的電話號碼格式或編號方案。

此外,phonenumbers 模組支援本地化,使您能夠以不同的語言和格式顯示電話號碼。您可以在格式化電話號碼時指定所需的語言,確保輸出符合指定語言的約定。此本地化功能在擁有全球使用者群的應用程式中尤其有用,因為它透過以每個區域熟悉的和適當的格式呈現電話號碼來增強使用者體驗。

最佳實踐和注意事項

在處理敏感的使用者資料時,必須考慮隱私和安全問題。遵守適用的資料保護法律,並採取必要的預防措施來保護電話號碼。採取適當的預防措施以防止濫用或非法訪問電話號碼資訊。

結論

Python 中的 phonenumbers 模組是用於解析、驗證、格式化和管理電話號碼的強大而便捷的工具。它廣泛的功能範圍,包括以各種格式解析電話號碼、驗證其正確性以及執行地理編碼和運營商查詢等高階操作,使其成為處理電話號碼的應用程式的寶貴資產。憑藉其對國際電話號碼的支援、自定義選項和本地化功能,phonenumbers 模組為電話號碼管理提供了一個全面的解決方案。透過利用此模組,開發人員可以確保在他們的 Python 專案中準確且一致地處理電話號碼,從而增強功能、使用者體驗和資料完整性。

更新於:2023-07-25

3K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.