Python 提取字元串中的電話號碼

Python 是一種高級的、面向對象的編程語言,它具有簡單易學、開發迅速、代碼簡潔等特點,廣泛應用於 Web 開發、數據科學、人工智慧等領域。在 Python 中,提取字元串中的電話號碼是一項常用而重要的操作。本文將從多個方面探討如何使用 Python 提取字元串中的電話號碼。

一、正則表達式提取電話號碼

正則表達式是一種通用的字元串匹配與處理模式,用於檢索、替換那些符合某個規則的文本。在 Python 中,可以藉助 re 模塊使用正則表達式提取字元串中的電話號碼。


import re

phone_regex = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})')
text = '聯繫我電話為:123-456-7890。'
match = phone_regex.search(text)
if match:
    phone_number = '-'.join(match.groups())
    print(phone_number)

上述代碼中,首先使用 re.compile() 函數創建了一個正則表達式對象 phone_regex,該正則表達式用於匹配形如 123-456-7890 或 (123) 456-7890 的電話號碼。接著使用 search() 函數在文本 text 中查找匹配的電話號碼,如果存在匹配,則使用 join() 函數合併電話號碼的各個部分,並輸出處理後的電話號碼。

二、pyquery 提取網頁中的電話號碼

pyquery 是一個強大、靈活的 Python 網頁解析庫,支持類似於 jQuery 的語法和 API,可以快速、方便地從 HTML 文檔中提取數據。在使用 pyquery 提取網頁中的電話號碼時,可以先使用 requests 模塊獲取網頁 HTML,然後使用 pyquery 解析 HTML 文檔,最後使用正則表達式提取電話號碼。


import requests
from pyquery import PyQuery as pq
import re

url = 'https://www.example.com/'
html = requests.get(url).text
doc = pq(html)
phone_regex = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})')
phone_numbers = []
for para in doc('p').items():
    text = para.text().strip()
    if phone_regex.search(text):
        match = phone_regex.search(text)
        phone_number = '-'.join(match.groups())
        phone_numbers.append(phone_number)
print(phone_numbers)

上述代碼中,首先使用 requests.get() 函數獲取指定網頁的 HTML,並使用 PyQuery 解析 HTML 文檔。然後使用正則表達式匹配電話號碼,並將匹配結果存儲在列表 phone_numbers 中。在具體提取電話號碼時,遍歷網頁中的所有段落,使用 strip() 函數去掉段落首尾的空白字元,並使用正則表達式查找匹配的電話號碼,如果存在,則使用 join() 函數合併電話號碼的各個部分。

三、使用第三方庫 phonenumbers 進行電話號碼解析

phonenumbers 是一個 Python 第三方庫,用於解析、驗證、格式化電話號碼。它支持國內外多種電話號碼格式,包括國際區號、本地區號、分機號、帶括弧或不帶括弧的電話號碼等。在使用 phonenumbers 進行電話號碼解析時,需要先使用 parse() 函數將電話號碼解析為 phonenumbers 中的 PhoneNumber 對象,然後可以通過該對象的各個屬性獲取電話號碼的詳細信息。


import phonenumbers

phone_number = '+86 10-12345678'
parsed_number = phonenumbers.parse(phone_number, None)
print(parsed_number.country_code)
print(parsed_number.national_number)
print(phonenumbers.format_number(parsed_number, phonenumbers.PhoneNumberFormat.NATIONAL))

上述代碼中,首先定義了一個包含國際區號、本地區號和固定電話號碼的電話號碼變數 phone_number,然後使用 parse() 函數將電話號碼解析為 PhoneNumber 對象 parsed_number,使用該對象的 country_code 和 national_number 屬性分別獲取電話號碼的國家區號和國內區號。最後使用 format_number() 函數將 PhoneNumber 對象格式化成國內格式的電話號碼。

四、使用第三方庫 phonenumbers 進行電話號碼驗證

phonenumbers 也可以用於驗證手機號碼是否有效。在驗證手機號碼時,需要使用 is_valid_number() 函數檢測電話號碼是否為有效的手機號碼。


import phonenumbers

phone_number = '+86 13112345678'
parsed_number = phonenumbers.parse(phone_number, None)
if phonenumbers.is_valid_number(parsed_number):
    print('該手機號碼有效。')
else:
    print('該手機號碼無效。')

上述代碼中,首先定義了一個包含國際區號、本地區號和手機號碼的電話號碼變數 phone_number,然後使用 parse() 函數將電話號碼解析為 PhoneNumber 對象 parsed_number,使用 is_valid_number() 函數判斷手機號碼是否有效。

原創文章,作者:VAVVO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/374868.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VAVVO的頭像VAVVO
上一篇 2025-04-28 13:17
下一篇 2025-04-28 13:17

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29

發表回復

登錄後才能評論