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))

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++面向对象的常见面试题目(一)

1. 面向对象的三大特征 &#xff08;1&#xff09;封装&#xff1a;隐藏对象的内部状态&#xff0c;只暴露必要的接口。 #include <iostream> #include <string>// 定义一个简单的类 Person class Person { private: // 私有成员&#xff0c;外部不可直接访问std…

Mac OS ssh 连接提示 Permission denied (publickey)

这错误有点奇葩&#xff0c;MacBook的IDE(vscode和pycharm)远程都连不上&#xff0c;terminal能连上&#xff0c;windows的pycharm能连上&#xff0c;见鬼了&#xff0c;所以肯定不是秘钥的问题了&#xff0c;查了好久竟然发现是权限的问题。。 chmod 400 ~/.ssh/id_rsa http…

华为机试HJ37统计每个月兔子的总数

华为机试HJ37统计每个月兔子的总数 题目&#xff1a; 想法&#xff1a; 上述题目实际是一个斐波那契数列&#xff0c;利用斐波那契数列对问题进行求解 input_number int(input())def fib(n):if n < 2:return 1else:n_1 1n_2 1count 2while count < n:n_1, n_2 n_…

【Android】【多屏】多屏异显异触调试技巧总结

这里写目录标题 如何获取多屏IDs获取多屏的size/density如何启动应用到指定DisplayId多屏截屏/录屏screencapscreenrecord发送按键到指定DisplayId 如何获取多屏IDs dumpsys display | grep mDisplayIdtrinket:/ # dumpsys display | grep mDisplayIdmDisplayId0mDisplayId2 t…

【AI资讯】可以媲美GPT-SoVITS的低显存开源文本转语音模型Fish Speech

Fish Speech是一款由fishaudio开发的全新文本转语音工具&#xff0c;支持中英日三种语言&#xff0c;语音处理接近人类水平&#xff0c;使用Flash-Attn算法处理大规模数据&#xff0c;提供高效、准确、稳定的TTS体验。 Fish Audio

区块链技术的应用场景和优势。

区块链技术具有广泛的应用场景和优势。 区块链技术的应用场景&#xff1a; 1. 金融服务&#xff1a;区块链可用于支付、跨境汇款、借贷和结算等金融服务&#xff0c;提高交易效率、降低成本并增强安全性。 2. 物联网&#xff08;IoT&#xff09;&#xff1a;区块链可以用于物…

机器学习Day12:特征选择与稀疏学习

1.子集搜索与评价 相关特征&#xff1a;对当前学习任务有用的特征 无关特征&#xff1a;对当前学习任务没用的特征 特征选择&#xff1a;从给定的特征集合中选择出相关特征子集的过程 为什么要特征选择&#xff1f; 1.任务中经常碰到维数灾难 2.去除不相关的特征能降低学习的…

Git注释规范

主打一个有用 代码的提交规范参考如下&#xff1a; init:初始化项目feat:新功能&#xff08;feature&#xff09;fix:修补bugdocs:文档&#xff08;documentation&#xff09;style:格式&#xff08;不影响代码运行的变动&#xff09;refactor:重构&#xff08;即不是新增功能…

NodeJs获取文件扩展名

path.extname 是 Node.js 路径模块 (path) 中的一个方法&#xff0c;用于获取文件路径的扩展名。扩展名是指文件名中最后一个 .&#xff08;点&#xff09;之后的部分&#xff0c;包括这个 .。 const path require(path);const filename example.txt; const ext path.extna…

计算机网络之令牌环

1.令牌环工作原理 令牌环&#xff08;Token Ring&#xff09;是一种局域网&#xff08;LAN&#xff09;的通信协议&#xff0c;最初由IBM在1984年开发并标准化为IEEE 802.5标准。在令牌环网络中&#xff0c;所有的计算机或工作站被连接成一个逻辑或物理的环形拓扑结构。网络中…

排序(2)

我们在排序&#xff08;1&#xff09;中说到选择排序的代码&#xff1a; void SelectSort(int* a,int n) {int begin0,endn-1;int minibegin,maxbegin;for(int ibegin1;i<end;i){if(a[i]>a[max]){maxii;}if(a[i]<a[mini]){minii;}begin;--end;}Swap(&a[beign],&a…

SKF轴承故障频率查询

1&#xff0c;第一步&#xff1a;搜索轴承型号 skf官网 2&#xff0c;第二步&#xff1a;查询故障频率。 第三步&#xff1a;

尚品汇-(十四)

&#xff08;1&#xff09;提交git 商品后台管理到此已经完成&#xff0c;我们可以把项目提交到公共的环境&#xff0c;原来使用svn&#xff0c;现在使用git 首先在本地创建ssh key&#xff1b; 命令&#xff1a;ssh-keygen -t rsa -C "your_emailyouremail.com" I…

完美解决ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)

已解决ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO) 下滑查看解决方法 文章目录 报错问题解决思路解决方法交流 报错问题 ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO) 解决思路 对…

InfluxDB v2.x中的Flux基本概念

InfluxDB v2.x中的Flux查询语言的核心概念主要包括以下几个方面&#xff1a; 1. 表&#xff08;Tables&#xff09; Flux以表&#xff08;Tables&#xff09;的形式处理数据。每个表包含多行数据&#xff0c;每行数据都是一个record&#xff08;记录&#xff09;&#xff0c;…

落日余晖映晚霞

落日余晖映晚霞&#xff0c;立于海滨&#xff0c;望夕阳余晖洒于波光粼粼之上&#xff0c;金光跳跃&#xff0c;若繁星闪烁&#xff0c;耀人心目。 海风轻拂&#xff0c;心境宁静&#xff0c;凡尘俗务皆于此刹那消散&#xff0c;思绪万干&#xff0c;或忆往昔点滴&#xff0c;或…

刷爆leetcode第十期

题目一 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 首先我们要来判断下它们的根是否相等 根相等的话是否它们的左子树相等 是否…

在CMD中创建虚拟环境并在VSCode中使用和管理

1. 使用Conda创建虚拟环境 在CMD或Anaconda Prompt中执行以下代码以创建一个新的虚拟环境&#xff1a; conda create -n my_env python 3.8 这样会创建一个名为 my_env 的环境&#xff0c;并在Anaconda环境目录下生成一个相应的文件夹&#xff0c;包含该虚拟环境所需的所有…

GD32实战篇-双向数控BUCK-BOOST-BOOST升压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

MySQL之备份与恢复(八)

备份与恢复 还原逻辑备份 如果还原的是逻辑备份而不是物理备份&#xff0c;则与使用操作系统简单地复制文件到适当位置的方式不同&#xff0c;需要使用MySQL服务器本身来加载数据到表中。在加载导出文件之前&#xff0c;应该先花一点时间考虑文件有多大&#xff0c;需要多久加…