从Python字符串中提取数字

2025年1月5日 | 阅读 7 分钟

在 Python 中处理字符串是一项常见的挑战。在某些情况下,我们会从字符串中获取数值,这也会导致问题。Python 提供了一系列函数来处理字符串,以及用于从字符串中提取数字的方法。

本文将向您介绍从字符串中提取数字的各种方法及其实现。

了解 Python 中的字符串

在开始学习从字符串中提取数字的方法之前,了解 Python 如何处理字符串的基础知识至关重要。字符串是由字符组成的序列,包括字母、数字、标点符号和空格,它们被包含在单引号或双引号中。Python 提供了多种内置函数和技术,可以应用于字符串以进行操作和转换。这些技术可用于提取、转换和加载数据,使其更容易处理和分析。通过学习字符串操作的基础知识,您将能够利用 Python 在处理文本数据时的全部功能。

问题陈述

在这里,我们将得到一个包含一些整数和一些字符的字符串。我们需要使用不同的方法从中提取数字。

让我们通过一个例子来理解问题陈述

输入:你好,我正在处理一个包含 3 个数字和 5 个特殊字符的字符串

输出 [3, 5]

为什么我们需要从字符串中提取数字?

在处理数据处理时,拥有一个有效的从字符串中提取数字的方法至关重要。此过程至关重要,因为它有助于诸如数据验证、数学运算和文本解析之类的任务。这样做可以提高代码的可读性,并确保数据完整性得到维护,这对于根据数据做出准确的决策至关重要。

从字符串中提取数字的方法

Python 提供了一系列用于从字符串中提取数字的方法。这些方法包括:

  • findall() 方法
  • isnumeric()
  • isdigit()
  • filter()
  • numpy
  • translate()
  • split()
  • map()

让我们通过示例及其实现来详细探讨每种方法。

re.findall() 方法

re.findall() 方法是 Python re 模块中的一个强大功能,允许您在给定字符串中搜索正则表达式模式的所有出现。它返回所有匹配子字符串的列表,这对于各种文本处理任务(如数据清理和分析)非常有用。使用此功能,我们可以通过使用 findall() 方法查看正则表达式来查找文本字符串中数字的出现。正则表达式 r'\d+' 用于查看包含数字的字符串。\d+ 模式用于查找输入字符串中的一个或多个数字。作为输出,它返回一个包含数字的字符串列表。然后使用 map() 函数,该函数将 re.Findall() 函数获得的字符串转换为整数。最终输出或结果可以是仅包含整数的列表。

让我们通过 Python 中的一些示例来探索使用 re.findall() 方法从字符串中提取数字。

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters
Numbers in the string: [3, 5]

我们传入了一个字符串,并使用 re.findall() 搜索包含数字的字符串。然后,map() 函数将字符串转换为列表。

isnumeric() 方法

如果您正在寻找一种不同的方法来从字符串中提取数字,请尝试使用 isnumeric() 功能。此功能可让您测试字符串中的每个元素,以确定它是否为数字。借助 for 循环,您可以提取字符串中的所有数字。此技术在处理包含字母和数字混合的字符串时可能特别有用。split() 功能用于分割字符串并提取输入字符串中的每个元素。使用此技术,如果生成的字符串是数字,则可以使用 int() 将其转换为整数并将其添加到结果列表中。

以下示例显示了 isnumeric() 函数的使用并从字符串中提取数字

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters
Numbers in the string: [3, 5]

首先使用 split() 方法将输入字符串分割成每个元素,然后使用 for 循环,使用 isnumeric() 检查每个元素。使用 int() 函数转换包含数字的字符串。结果将是字符串中存在的整数列表。

isdigit() 方法

从字符串中提取数字的另一种方法是使用 isdigit() 方法。它会返回所有包含数字的字符串为 True。首先,使用 split() 方法将字符串分割成所有元素,然后 isdigit() 函数会检查字符串中的数字。然后,int() 方法有助于将数字字符串转换为整数。

让我们看一个实现此方法的示例

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters 
Numbers in the string: [3, 5]

filter() 方法

filter() 函数从可迭代对象的元素中构造一个迭代器,这些元素使函数返回 true。简单来说,filter() 函数使用一个函数来过滤给定的可迭代对象,该函数评估可迭代对象中的每个元素是否为真。clear filter() 函数是一个强大的工具,您可以在许多情况下使用它。当您需要快速有效地过滤大量数据时,它尤其有用。但是,请记住 filter() 函数不会修改原始可迭代对象。相反,它会创建一个新的迭代器,您可以使用它来迭代过滤后的元素。

让我们看一个解释 filter() 函数在 Python 中用法的示例

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters 
Numbers in the string: [3, 5]

在此示例中,str.isdigit 是一个函数,用于测试字符串中的每个字符是否为数字。filter() 函数将 str.isdigit 应用于输入字符串中的每个字符。结果仅包含 str.isdigit 返回 True 的字符。

使用 NumPy 模块

NumPy,也称为 Numerical Python,是 Python 中一个流行且重要的库,其中包含多维数组。它提供了许多用于处理和操作数组和矩阵元素的函数和技术。对于从字符串中提取数字,可以使用 NumPy 数组。使用列表推导式,我们可以从字符串中提取数字。

以下示例有助于解释 NumPy 模块如何从字符串中提取数字

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters 
Numbers in the string: [3, 5]

str.translate() 与 str.maketrans()

str.translate() 函数与 str.maketrans() 函数一起,有助于从输入字符串中删除非数字字符。str.maketrans() 方法返回一个翻译表,该表可与 str.translate() 方法一起使用来替换指定的字符。str.translate() 方法返回一个字符串,其中某些指定的字符被替换为字典或映射表中定义的字符。

让我们看一个解释此方法在 Python 中用法的示例

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters
List of numbers in the string: [3, 5]

使用 map() 函数

map() 函数也用于从字符串中获取数字。它使用循环搜索每个字符串,并使用 isdigit() 函数检查并返回包含数字的字符串。然后,map() 函数使用 int() 函数将数字字符串转换为整数。作为输出,它返回一个整数列表。

让我们使用 Python 来实现 map() 函数,从字符串中提取整数

示例

输出

String: Hello, I am working with a string having 3 numbers and 5 special characters
List of numbers in the string: [3, 5]