文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用Python从字符串中提取数字?

2023-08-31 18:36

关注


阅读更多:Python 教程

方法一:使用正则表达式

正则表达式是一种专门用于字符串匹配的工具,在Python中有re模块支持正则表达式操作。通过正则表达式,可以匹配和提取字符串中的数字。具体实现代码如下:

import restr1 = '这是一段包含数字的字符串 123456,可以使用正则表达式提取数字'# 定义正则表达式pattern = r'\d+'# 匹配字符串中的数字match_obj = re.findall(pattern, str1)# 输出匹配结果print(match_obj)

Python

Copy

代码中,使用re.findall函数匹配字符串中的数字,匹配规则由正则表达式r’\d+’定义,\d表示匹配数字,+表示匹配前面的1个或多个数字。执行上述代码后,输出结果为['123456']

如果需要提取多组数字,只需要修改正则表达式的定义即可。例如,需要提取下面字符串中的数字:

str2 = 'Python是一门流行的编程语言,目前最新版本是Python 3.10,发布于2021年10月4日'

Bash

Copy

该字符串中包含两组数字,分别是3.10和2021年10月4日。可以使用r’\d+.\d+’匹配版本号,使用r’\d{4}年\d{1,2}月\d{1,2}日’匹配日期信息。具体的代码实现如下:

import restr2 = 'Python是一门流行的编程语言,目前最新版本是Python 3.10,发布于2021年10月4日'# 定义正则表达式pattern1 = r'\d+\.\d+'pattern2 = r'\d{4}年\d{1,2}月\d{1,2}日'# 匹配字符串中的数字match_obj1 = re.findall(pattern1, str2)match_obj2 = re.findall(pattern2, str2)# 输出匹配结果print(match_obj1)print(match_obj2)

Python

Copy

在上述代码中,使用了两个正则表达式,匹配结果存储在match_obj1match_obj2变量中,输出结果分别为['3.10']['2021年10月4日']

方法二:使用字符串方法

除了正则表达式外,Python的字符串还提供了一些常用的方法,可以方便地从字符串中提取数字。下面介绍一些常用的字符串方法。

方法一:isdigit()

isdigit()方法可以判断一个字符串是否只包含数字字符。如果包含数字字符,则返回True,否则返回False。如果一个字符串只有部分字符为数字,也会返回False。例如,字符串’12345’返回True,字符串’12F45’返回False。具体代码如下:

str3 = '1969年7月20日 20:17:40'num_str = ''# 提取字符串中的数字for char in str3:    if char.isdigit():        num_str += char# 输出匹配结果print(num_str)

Python

Copy

在上述代码中,使用字符串方法isdigit()判断字符是否为数字,将字符串中的数字提取出来,输出结果为19697201740

方法二:isnumeric()

isnumeric()方法可以判断一个字符串是否只包含数字字符和数字字符对应的Unicode数值。如果包含数字字符和对应的Unicode数值,则返回True,否则返回False。例如,字符串’12345’和字符串’一二三四五’都返回True,而字符串’12F45’和字符串’$#@!’都返回False。具体代码如下:

str4 = '一二三四五 12345'num_str = ''# 提取字符串中的数字for char in str4:    if char.isnumeric():        num_str += char# 输出匹配结果print(num_str)

Python

Copy

执行上述代码后,输出结果为一二三四五12345,只提取其中的数字字符。

方法三:split()

split()方法可以将一个字符串按指定字符分割成若干个子字符串,并返回一个列表。例如,可以使用空格、逗号、分号等分割符将一个字符串分割成若干个子字符串。许多时候,字符串中的数字和非数字字符混合在一起,可以使用split()方法将字符串按照非数字字符分割成若干个子字符串,再从中提取数字。具体代码如下:

str5 = '这个字符串包含数字12、54和97,还有一些其他英文字母'num_list = []# 将字符串按非数字字符分割成若干个子字符串str_lst = str5.split(' ')for s in str_lst:    if s.isdigit():        num_list.append(int(s))# 输出匹配结果print(num_list)

Python

Copy

在上述代码中,使用split()方法将字符串按照空格分割成若干个子字符串,如果子字符串是数字,则将其转换成整数并存储在列表中,输出结果为[12, 54, 97]

方法三:使用第三方库

Python的第三方库很多,其中一些库可以方便地从字符串中提取数字。例如,使用NumPy库中的函数可以将字符串中的数字转换成浮点数。具体代码如下:

import numpy as npstr6 = '3.1415926'# 将字符串转换成浮点数num_float = np.float(str6)# 输出匹配结果print(num_float)

Python

Copy

在上述代码中,使用NumPy库中的np.float()函数将字符串转换成浮点数,输出结果为3.1415926

结论

使用Python从字符串中提取数字,可以使用正则表达式、字符串方法或第三方库。如果字符串中的数字位置和格式较为固定,使用正则表达式可以比较方便地提取数字;如果字符串中数字和非数字字符混合在一起,可以使用字符串方法将字符串分割成若干个子字符串提取数字;如果需要将字符串中的数字转换成数字类型,也可以使用第三方库提供的函数快速实现。


来源地址:https://blog.csdn.net/Rick_M/article/details/131988656

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯