Python】从文本字符串中提取数字、电话号码、日期、网址的方法

关于从文本字符串中提取数字、电话号码、日期和网址的方法:

提取数字:

在 Python 中,使用正则表达式 \d 来匹配数字。 \d 表示匹配一个数字字符(0-9)。如果要匹配连续的数字,可以使用 \d+ 。

import re



def extract_digits(text):

    digit_list = re.findall(r'\d+', text)

    return [int(digit) for digit in digit_list] # 将提取的数字字符串转换为整数



text = "I have 15 apples and 20 oranges. The price is $30."

print(extract_digits(text))

提取电话号码:

电话号码的格式多种多样,但常见的有以下几种:

1. 以  +  开头,后面跟国家代码和电话号码,例如: +8613812345678 

2. 没有  +  ,直接是国家代码和电话号码,例如: 8613812345678 

3. 国内的手机号码,通常是 11 位数字,以 1 开头,例如: 13812345678 

4. 固定电话号码,可能有区号,例如: 010-12345678  或  021 12345678 

以下是一个相对复杂的电话号码提取函数示例:


 

import re



def extract_phone_numbers(text):

    patterns = [

        r'\+\d{1,3}\d{10}', # 以 + 开头,后面是国家代码和 10 位电话号码

        r'\d{11}', # 11 位手机号码

        r'\d{3}-\d{7,8}', # 区号 3 位,号码 7 到 8 位

        r'\d{4}-\d{7}', # 区号 4 位,号码 7 位

        r'\d{3}\s\d{7,8}', # 区号 3 位,空格分隔,号码 7 到 8 位

        r'\d{4}\s\d{7}' # 区号 4 位,空格分隔,号码 7 位

    ]

    phone_numbers = []

    for pattern in patterns:

        found_numbers = re.findall(pattern, text)

        phone_numbers.extend(found_numbers)

    return phone_numbers



text = "My phone number is +8613812345678. Another one is 010-12345678 and 15912345678"

print(extract_phone_numbers(text))



提取日期:

日期的格式非常多,常见的有  YYYY-MM-DD 、 MM/DD/YYYY 、 DD-MM-YYYY  等。以下是一个能够处理多种常见日期格式的示例:

from datetime import datetime

import re



def extract_dates(text):

    date_patterns = [

        r'\d{4}-\d{2}-\d{2}', # YYYY-MM-DD

        r'\d{2}/\d{2}/\d{4}', # MM/DD/YYYY

        r'\d{2}-\d{2}-\d{4}', # DD-MM-YYYY

    ]

    dates = []

    for pattern in date_patterns:

        found_dates = re.findall(pattern, text)

        for date_str in found_dates:

            try:

                date = datetime.strptime(date_str, pattern)

                dates.append(date)

            except ValueError:

                pass

    return dates



text = "The event is on 2024-07-07 and another one on 07/07/2024 and 07-07-2024"

print(extract_dates(text))

提取网址:

网址的格式通常以  http  或  https  开头,后面跟着域名和路径等。以下是一个提取网址的示例:


 

import re



def extract_urls(text):

    url_pattern = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'

    return re.findall(url_pattern, text)



text = "Check out these websites: https://www.example.com/page?param=value and http://another-site.org"

print(extract_urls(text))



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值