一文详解如何使用Python从字符串中提取数字

 更新时间:2023年11月06日 08:47:01   作者:Rick_M359  
这篇文章主要给大家介绍了关于如何使用Python从字符串中提取数字的相关资料,我们在进行数据处理时候,可能想要提取字符串中的数字进行分析,需要的朋友可以参考下

前言

在Python中,有时候需要从字符串中提取特定的数字信息,这种操作很常见。例如,从一篇新闻报道中提取新闻发布日期、从一篇小说中提取章节编号等。那么,如何使用Python从字符串中提取数字呢?本文将介绍几种方式。

方法一:使用正则表达式

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

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

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

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

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

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

import re

str2 = '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)

在上述代码中,使用了两个正则表达式,匹配结果存储在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)

在上述代码中,使用字符串方法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)

执行上述代码后,输出结果为一二三四五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)

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

方法三:使用第三方库

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

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

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

结论

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

到此这篇关于如何使用Python从字符串中提取数字的文章就介绍到这了,更多相关Python字符串提取数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 完美解决matplotlib子图坐标轴重叠问题

    完美解决matplotlib子图坐标轴重叠问题

    这篇文章主要介绍了完美解决matplotlib子图坐标轴重叠问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python中字典的缓存池

    Python中字典的缓存池

    这篇文章主要介绍了Python中字典的缓存池,字典的缓存池采用数组实现的,并且容量也是80个,下文详细介绍需要的小伙伴可以参考一下
    2022-05-05
  • 关于Python中对变量赋值过程的理解

    关于Python中对变量赋值过程的理解

    在Python中对变量赋值过程的理解,有助于学习者对Python的变量和所指向的对象之间的指向关系深刻理解,避免编程中多个变量赋值后,对变量结果的不确定,,需要的朋友可以参考下
    2023-05-05
  • Python 数据库操作SQL基础

    Python 数据库操作SQL基础

    在本章节中,我们将讨论 Python 数据库操作的基础知识,重点关注 SQL即Structured Query Language,结构化查询语言,SQL 是用于管理关系型数据库的标准编程语言,可以用来执行数据定义、数据操作和数据控制等任务
    2023-06-06
  • Django框架的使用教程路由请求响应的方法

    Django框架的使用教程路由请求响应的方法

    这篇文章主要介绍了Django框架的使用教程路由请求响应的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • django实现更改数据库某个字段以及字段段内数据

    django实现更改数据库某个字段以及字段段内数据

    这篇文章主要介绍了django实现更改数据库某个字段以及字段段内数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python并发多线程的具体操作步骤

    Python并发多线程的具体操作步骤

    并发指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多任务一起执行,下面这篇文章主要给大家介绍了关于Python并发多线程的具体操作步骤的相关资料,需要的朋友可以参考下
    2024-02-02
  • Python读取Word文档中的Excel嵌入文件的方法详解

    Python读取Word文档中的Excel嵌入文件的方法详解

    这篇文章主要为大家详细介绍了Python读取Word文档中的Excel嵌入文件的方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-12-12
  • Python实现动态添加类的属性或成员函数的解决方法

    Python实现动态添加类的属性或成员函数的解决方法

    这篇文章主要介绍了Python实现动态添加类的属性或成员函数的解决方法,在类似插件开发的时候会比较有用,需要的朋友可以参考下
    2014-07-07
  • Python使用latexify模块实现将代码为数学公式

    Python使用latexify模块实现将代码为数学公式

    latexify 是一个轻量级的 Python 模块,可以将 Python 代码转换为 LaTeX 格式的数学表达式,这篇文章就来和大家探索一下如何使用latexify模块实现将代码为数学公式吧
    2023-12-12

最新评论