每當我們看到陌生的電話號碼或一個隨機號碼打來的電話,一些基本的問題就會浮現在我們的腦海中,包括誰在打電話,打電話的人在哪裡,電話號碼的地區,電話號碼是否有效,以及許多其他問題。如果我們必須手動找出所有這些問題的答案,這將需要一些時間,因為我們不能同時執行所有操作。比如,為了知道電話號碼的地區,我們必須了解每個國家的國家代碼,這實際上是不可能的(除了一些例外)。同樣,如果我們必須手動檢查給定的電話號碼是否有效,那麼我們必須撥打該號碼,如果我們有數百或數千個這樣的號碼怎麼辦。因此,手動執行這樣的操作非常繁忙和耗時,這就是為什麼我們必須尋找替代解決方案。許多編程語言為我們提供擴展或包,以便在給定的電話號碼上執行這些操作。
Python 是最流行的編程語言之一,它為我們提供了 phonenumbers Module,這對我們使用程序執行所有此類操作非常有幫助。因此,我們將在本教程中學習 Python 的 phonenumbers 模塊,並通過在示例程序中使用該模塊來執行幾個這樣的操作。
Phonenumbers 是一個 Python 模塊,具有解析電話號碼等多種功能。Python 的 Phonenumbers 模塊具有多種功能,能夠對給定的電話號碼執行各種操作,例如查找電話號碼的區域、電話號碼的運營商等。我們可以通過將 phonenumbers 模塊導入到程序中來使用 Python 程序中 phone numbers 模塊的功能,然後我們可以使用這些功能對給定的電話號碼執行所需的操作。Phonenumbers 模塊在許多方面對我們非常有幫助,包括以下幾個好處:
- 這個模塊節省了我們大量的精力
- 本模塊節省了我們對電話號碼進行操作的時間
- 我們可以使用 phonenumbers 模塊對給定的電話號碼同時執行多個操作
- 我們甚至可以使用這個模塊同時對多個電話號碼執行操作
以下是在 Python 程序中使用 phonenumbers 模塊的幾個突出優點。在本教程中,我們將通過示例程序對給定的電話號碼執行一些這樣的操作,這就是我們如何理解 phonenumbers 模塊的實現。我們還將在本節中執行 phonenumbers 模塊的安裝過程。
Phonenumbers 不是 Python 的內置包(它不會隨 Python 安裝一起安裝),這就是為什麼如果我們的系統中還沒有這個模塊,我們就必須安裝這個模塊。我們應該首先確定 phonenumbers 模塊是否已經安裝在系統中,因為如果系統中沒有這個模塊,我們將無法執行實現。如果我們的系統中沒有安裝 phonenumbers 模塊,我們有多種方法來安裝該模塊,在所有可能的安裝方法中,使用 pip 安裝程序安裝 phonenumbers 模塊是最簡單的方法。這就是為什麼我們將在本教程中使用 pip installer 在我們的系統中安裝 phonenumbers 模塊,在此方法中,我們將使用以下 pip installer 命令:
pip install phonenumbers
我們必須在命令提示符終端 Shell 中寫入上面給出的命令,並且在寫入命令後,我們必須按回車鍵,以便 pip 安裝程序將開始在我們的系統中安裝該模塊。一旦這個模塊的安裝過程開始,將需要一段時間才能在我們的系統中成功安裝該模塊,我們必須等到那時。
正如我們所看到的,一個成功安裝的消息顯示在我們的屏幕上,這意味着 phonenumbers 模塊現在已經成功安裝在我們的系統中。現在,我們可以通過將 phonenumbers 模塊導入示例 Python 程序並理解其實現來開始使用它。
正如我們已經討論過的,我們可以使用 Python 程序中 phonenumbers 模塊的函數來執行幾個操作。我們將在這一部分中使用 phonenumbers 模塊的功能執行幾個這樣的操作,以了解該模塊的實現。我們將使用 phonenumbers 模塊的功能執行以下操作,以了解其實現:
- 知道電話號碼的區域
- 知道電話號碼的時區
- 知道電話號碼的攜帶者
- 將字符串變量轉換為電話號碼格式
- 匹配和提取電話號碼
- 驗證電話號碼
我們將通過在一個示例程序中使用 phonenumbers 模塊的函數來執行上面給出的所有操作,以了解其實現和工作原理。
我們可以知道給定電話號碼的區域,即我們可以找出給定電話號碼屬於哪個國家或哪個地區。phonenumbers 模塊的 Geocoder 庫為我們提供了 description_for_number()函數,我們可以用它來找出給定電話號碼的區域。我們可以通過在函數中給出電話號碼作為參數來使用它,然後我們可以在輸出中打印電話號碼的區域作為結果。我們可以通過下面的示例程序來理解 phonenumbers 模塊的 description_for_number()函數的實現。
示例 1: 看看下面的程序,我們已經在輸出中打印了給定電話號碼的區域:
# Importing phonenumbers module
import phonenumbers as pn
# Importing geocoder library from the phonenumbers module
from phonenumbers import geocoder as gc
# Parsing a given phone number
givenPN = pn.parse("+919034xxxxxx")
# Using parse phone number for finding region
regionOfPN = gc.description_for_number(givenPN, 'en')
# Printing region as the result
print("The region of the given phone number is: ", regionOfPN)
輸出:
The region of the given phone number is: India
正如我們所看到的,給定電話號碼的區域被打印在輸出中,這就是我們如何找到並打印任何給定電話號碼的區域。出於安全和個人原因,我們隱藏了示例中使用的電話號碼的最後六位數字。
說明:
在將 phonenumbers 模塊導入為 pt 後,我們已經將 phonenumbers 模塊的地理編碼庫導入為 gc。之後,我們解析了給定的電話號碼,並將結果存儲在初始化的變量(givenPN)中,以將其用作 description_for_number()函數中的參數。然後,我們使用 description_for_number()中解析的數字變量作為參數,並將結果存儲在第二個初始化的變量中。在 description_for_number()函數中,我們還使用了「en」語言來指定打印和存儲結果的英語。最後,我們通過在 print 語句中使用 regionOfPN 變量在輸出中打印結果。
我們甚至可以使用 phonenumbers 模塊找出給定的電話號碼屬於哪個 SIM 卡運營商。phonenumbers 模塊的運營商庫為我們提供了使用 name_for_number()函數查找電話號碼運營商的選項。在運營商庫的 name_for_number()函數中,我們必須使用解析電話號碼作為參數,然後我們可以在輸出中打印給定電話號碼的運營商。我們可以通過下面的示例程序來理解 phonenumbers 模塊的 name_for_number()函數的實現。
示例 2: 看看下面的 Python 程序,我們在其中打印了給定電話號碼的 sim 卡運營商:
# Importing phonenumbers module
import phonenumbers as pn
# Importing carrier library from the phonenumbers module
from phonenumbers import carrier as cr
# Parsing a given phone number
givenPN = pn.parse("+919034xxxxxx")
# Using parse phone number for finding the carrier
carrierOfPN = cr.name_for_number(givenPN, 'en')
# Printing carrier as the result
print("The SIM Card operator or carrier of the given phone number is: ", carrierOfPN)
輸出:
The SIM Card operator or carrier of the given phone number is: Tata Docomo
如我們所見,輸出中打印了給定電話號碼的載體,這就是我們如何找到並打印任何給定電話號碼的 SIM 卡運營商。
說明:
我們已經在 name_for_number()函數中使用了解析後的電話號碼變量來找出載體,最後,我們在 print 語句中使用結果變量,即 carrierOfPN 變量,在輸出中打印了程序的結果。
解析給定的電話號碼意味着根據 PhoneNumbers 模塊格式設置給定的電話號碼。我們可以通過在 phonenumbers 模塊的 parse()函數中提供一個電話號碼作為參數來完成這個操作。該函數將通過在輸出中以 phonenumbers 格式提供給定的電話號碼來產生結果。我們可以通過下面的示例程序來理解 parse()函數的用法,在該程序中,我們解析給定的電話號碼。
示例 3: 看看下面的程序,其中我們使用了 parse()函數來解析電話號碼:
# Importing phonenumbers module
import phonenumbers as pn
# Parsing a given phone number
givenPN = pn.parse("+919034xxxxxx")
# Printing the parsed phone number
print("The given phone number after parsed will look like as the following format: ")
print(givenPN)
輸出:
The given phone number after parsed will look like as the following format:
Country Code: 91 National Number: 9034xxxxxx
正如我們所看到的,我們已經解析了程序中給定的電話號碼,我們可以使用這個解析函數來解析參數中給定的任何電話號碼。
我們甚至可以簡單地從給定的電話號碼中得到給定電話號碼所屬地區的時區。我們可以使用 phonenumbers 模塊來執行這個任務,因為 phonenumber 模塊為我們提供了時區庫,用於找出給定電話號碼所在區域的時區。phonenumbers 模塊的時區庫為我們提供了 time_zones_for_number()函數,我們可以用它來找出 phonenumber 的時區。我們只需在 time_zones_for_number()中給出解析後的電話號碼作為參數,因此,我們可以找出電話號碼的時區,並在輸出中打印結果。我們可以通過下面的示例程序來理解 phonenumbers 模塊的 time_zones_for_number()函數的實現。
示例 4: 看看下面的 Python 程序,其中我們在輸出中打印了給定電話號碼的時區:
# Importing phonenumbers module
import phonenumbers as pn
# Importing timezone library from the phonenumbers module
from phonenumbers import timezone as tz
# Parsing a given phone number
givenPN = pn.parse("+919034xxxxxx")
# Using parse phone number for finding timezone
timezoneOfPN = tz.time_zones_for_number(givenPN)
# Printing carrier as the result
print("The timezone of the given phone number is: ", timezoneOfPN)
輸出:
The timezone of the given phone number is: ('Asia/Calcutta',)
正如我們所看到的,給定電話號碼的時區打印在輸出中,這就是我們如何找到並打印任何給定電話號碼的時區。
有時我們給出了多個電話號碼,我們必須在其中找出特定國家代碼或地區的電話號碼。如果我們手動這樣做,會花費很多時間,但是在 phonenumbers 模塊的幫助下可以節省很多時間。Phonenumbers 模塊為我們提供了 PhoneNumberMatcher 對象,該對象具有執行電話號碼匹配任務的相關功能。我們可以對一些給定的電話號碼使用 PhoneNumberMatcher()函數來過濾出需要的電話號碼,然後我們可以在輸出中打印出來。藉助以下示例程序,我們可以理解 phonenumbers 模塊的這種實現:
示例 5: 看看下面的 Python 程序,我們已經對給定的電話號碼執行了提取和匹配操作:
# Importing phonenumbers module
import phonenumbers as pn
# Defining multiple phone numbers
sampleText = "You can contact us at +919034xxxxxx in daytime or you can reach out us in night with +119876543210"
# Searching for a particular phone number
resultPN = pn.PhoneNumberMatcher(sampleText, "IN")
# Printing result in the output
for desiredPN in resultPN:
print(desiredPN)
輸出:
PhoneNumberMatch [23,36) +919034xxxxxx
如我們所見,我們已經從給定的示例文本中提取了一個特定地區(在本例中是印度)的電話號碼,並將其打印在輸出中。這就是我們如何使用 PhoneNumberMatcher 對象來匹配和提取給定文本中的特定電話號碼。
說明:
在定義了一個示例文本(其中我們提到了兩個不同地區的電話號碼)之後,我們在 PhoneNumberMatcher()函數中使用了這個帶有「in」參數的 sample text 變量,這樣它將從示例文本中找出印度地區的電話號碼。之後,我們在輸出中打印了這個搜索的結果,使用 for
循環來循環 resultPN 變量。
我們甚至可以使用 phonenumbers 模塊檢查給定的電話號碼是否有效。除此之外,我們還可以檢查給定的數字是否可能。為了執行這兩項任務,電話號碼為我們提供了兩種不同的功能,即 is valid number()& is may number()。我們可以使用這些函數,通過在這些函數中提供解析的電話號碼作為參數,來確定給定電話號碼的有效性和可能性。我們可以通過下面的示例程序來理解這兩個函數的實現。
示例 6: 看看下面的程序,我們已經驗證並檢查了給定數字的可能性:
# Importing phonenumbers module
import phonenumbers as pn
# Parsing a given phone number
givenPN = pn.parse("+919034xxxxxx")
# Validating the parsed number
validNumber = pn.is_valid_number(givenPN)
# Checking possibility of the number
possibleNumber = pn.is_possible_number(givenPN)
# Printing results in the output
print("Is the given phone number is valid?: ", validNumber)
print("Is the given phone number is possible?: ", possibleNumber)
輸出:
Is the given phone number is valid?: True
Is the given phone number is possible?: True
正如我們所看到的,給定號碼的有效性和可能性被打印在輸出中,這就是我們如何驗證和檢查任何給定電話號碼的可能性。
原創文章,作者:0DIBI,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126373.html