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

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

在实际开发过程中,我们经常需要从文本或字符串中抽取数字以进行计算或其他操作。在Python的数据分析和科学计算领域中,经常需要从字符串中提取数字部分。这篇文章将介绍如何在Python中快速提取字符串中的数字。

阅读更多:Python 教程

方法1:使用正则表达式

Python中提供了re模块,可以用正则表达式在字符串中匹配指定的数字部分。正则表达式的“\d”表示匹配任意数字,反斜杠“\”用于转义。因此,可以使用如下代码实现从字符串中提取单个数字:

import re

s = "hello123world"
num = re.search("\d", s)  # 搜寻字符串中的第一个数字
print(num.group())  # 输出搜到的数字,即1

re.search()函数用于搜索整个字符串中的第一个匹配项。在代码中,search()函数用于在字符串s中搜索第一个数字,并返回匹配的对象,可以使用group()方法提取数字。如果需要提取字符串中所有数字,可以使用findall()函数:

s = "hello123world456"
nums = re.findall("\d", s)  # 搜寻字符串中所有数字
print(nums)  # 输出搜到的数字列表,即['1', '2', '3', '4', '5', '6']

findall()函数返回一个包含所有匹配结果的列表。

有时,字符串中的数字不止是单个数字,而是数字串或者浮点数。可以使用“\d+”或“\d+.\d*”方便地提取数字串和浮点数。

s = "hello123world4.56"
nums = re.findall("\d+", s)  # 搜寻字符串中所有数字串
floats = re.findall("\d+\.\d*", s)  # 搜寻字符串中所有浮点数
print(nums)  # 输出数字串列表,即['123', '4', '56']
print(floats)  # 输出浮点数列表,即['4.56']

方法2:使用字符串切片

使用字符串切片是一种简单的从字符串中提取数字的方法。可以通过循环遍历字符串中的每个字符,筛选出数字字符并将其连接为数字串或浮点数。

s = "hello123world4.56"
num_str = ""
float_str = ""
for i in s:
    if i.isdigit():  # 判断字符是否为数字
        num_str += i
    if i == "." or i.isdigit():  # 判断字符是否为小数点或者数字
        float_str += i
num = int(num_str)
float_num = float(float_str)
print(num)  # 输出数字123
print(float_num)  # 输出浮点数4.56

上述代码从字符串中筛选出数字字符,并将其连接成数字串num_str和浮点数串float_str。在代码中,使用int()函数将数字串转换为整数类型,使用float()函数将浮点数串转换为浮点数类型。

方法3:使用split()函数

split()函数是Python中常用的字符串分割函数。可以使用split()函数将字符串分割成若干个子串,并筛选出数字串或浮点数。代码如下:

s = "hello123world4.56"
parts = s.split()  # 将字符串分割成若干个子串
nums = []  # 存储数字串或浮点数
for p in parts:
    if p.isdigit():  # 判断子串是否为数字串
        nums.append(int(p))
    elif "." in p and p.replace(".", "").isdigit():  # 判断子串是否为浮点数
        nums.append(float(p))
print(nums)  # 输出数字串或浮点数列表,即[123, 4.56]

上述代码使用split()函数将字符串分割成若干个子串,然后遍历每个子串,判断是否为数字串或浮点数,并将其存储在nums列表中。

方法4:使用isnumeric()函数

isnumeric()函数是Python内置的字符串方法之一,用于判断字符串是否只由数字组成。可以使用isnumeric()函数从字符串中提取数字。代码如下:

s = "hello123world456"
nums = []
num_str = ""
for i in s:
    if i.isnumeric():  # 判断字符是否为数字字符
        num_str += i
    elif num_str:
        nums.append(int(num_str))
        num_str = ""
if num_str:  # 处理最后一个数字串
    nums.append(int(num_str))
print(nums)  # 输出数字串列表,即[123, 456]

上述代码遍历字符串中的每个字符,判断是否为数字字符。如果是数字字符,则将其连接成数字串num_str;如果遇到非数字字符,则将num_str转换为整数类型,并将其添加到nums列表中。最后需要特别判断最后一个数字串。

方法5:使用join()函数和filter()函数

join()函数是Python中常用的字符串方法之一,用于将一个序列中的字符串连接成一个字符串。filter()函数也是Python内置函数之一,用于过滤一个序列中的元素。可以使用join()函数和filter()函数从字符串中提取数字。

s = "hello123world456"
nums = list(filter(lambda x: x.isdigit(), s))
num_str = "".join(nums)
nums_list = [int(num) for num in num_str]
print(nums_list)  # 输出数字串列表,即[1, 2, 3, 4, 5, 6]

上述代码使用filter()函数过滤出字符串s中的数字字符,然后使用join()函数将其连接成数字串num_str。最后使用列表推导式将num_str中的数字字符转换为整数类型,并存储在nums_list中。

结论

本文介绍了五种从字符串中提取数字的方法,包括正则表达式、字符串切片、split()函数、isnumeric()函数、join()函数和filter()函数。不同的方法适用于不同的应用场景,在使用时需要根据实际需求做出选择。以上方法均是Python中常用的方法,可以有效地提取字符串中的数字部分,帮助开发者更快速地完成数据分析和科学计算任务。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程