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/n/374868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VAVVOVAVVO
上一篇 2025-04-28 13:17
下一篇 2025-04-28 13:17

相关推荐

  • 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中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论