Python 正则提取数字

Python 正则提取数字

Python 正则提取数字

引言

正则表达式(Regular Expression)是一种用来匹配字符串的强大工具。在文本处理和数据分析中,我们经常需要对字符串进行数字提取,例如从一段文字中提取出电话号码、邮政编码等数字。Pythonre 模块提供了一系列函数和方法,可以方便地实现对数字的提取。

本文将介绍如何使用 Python 正则表达式提取数字。我们将从基础的数字匹配开始,逐步介绍如何处理不同形式的数字,并给出示例代码和运行结果。

1. 匹配单个数字

首先,我们来了解如何匹配一个单独的数字。在正则表达式中,数字可以用 \d 表示。以下是一个简单的示例代码:

import re

text = "I have 3 apples in my basket."
result = re.findall(r'\d', text)

print(result)

以上代码中,我们使用 re.findall 函数来查找字符串中的所有匹配。正则表达式 r'\d' 中的 \d 表示匹配任意一个数字。运行上述代码,输出为 ['3'],即找到了字符串中的数字 3。

2. 匹配多位数字

如果我们需要匹配多位数字,可以使用 \d+ 的形式。这里的 + 表示匹配一个或多个前面的字符。以下是一个示例代码:

import re

text = "I have 345 apples in my basket."
result = re.findall(r'\d+', text)

print(result)

运行上述代码,输出为 ['345'],即找到了字符串中的数字 345。

3. 提取多个数字

在实际的应用中,我们通常需要从一段文字中提取出所有的数字。可以使用 re.findall 函数结合正则表达式来实现这一目标。以下是一个示例代码:

import re

text = "I have 3 apples and 5 oranges, totaling 8 fruits."
result = re.findall(r'\d+', text)

print(result)

运行上述代码,输出为 ['3', '5', '8'],即找到了字符串中的所有数字。

4. 去除整数部分和小数部分

有时候,我们只需要提取数字的整数部分或小数部分。可以使用 re.findall 结合正则表达式来实现这一目标。以下是一个示例代码:

import re

text = "The price is $12.99."
integer_part = re.findall(r'\d+', text)
decimal_part = re.findall(r'\.\d+', text)

print("整数部分:", integer_part)
print("小数部分:", decimal_part)

运行上述代码,输出为:

整数部分: ['12']
小数部分: ['.99']

通过与 \d+ 结合,正则表达式 r'\.\d+' 匹配小数部分。需要注意的是,\ 是转义字符,所以在正则表达式中需要写成 r'\.\d+'

5. 忽略小数点前的数字

有时候,我们可能只想提取小数部分,而忽略小数点前的数字。可以使用 re.findall 结合正则表达式来实现这一目标。以下是一个示例代码:

import re

text = "The price is $12.99."
decimal_part = re.findall(r'\.\d+', text)

print(decimal_part)

运行上述代码,输出为 ['.99'],即找到了字符串中的小数部分。

6. 提取负数

正则表达式也可以用来提取负数。我们可以使用 -? 来匹配可能存在的负号。以下是一个示例代码:

import re

text = "The temperature is -3.5 degrees Celsius."
result = re.findall(r'-?\d+\.?\d*', text)

print(result)

运行上述代码,输出为 ['-3.5'],即找到了字符串中的负数。

7. 忽略小数点

有时候,我们可能只想提取整数部分,而忽略小数点部分。可以使用 re.findall 结合正则表达式来实现这一目标。以下是一个示例代码:

import re

text = "The temperature is -3.5 degrees Celsius."
integer_part = re.findall(r'-?\d+', text)

print(integer_part)

运行上述代码,输出为 ['-3', '5'],即找到了字符串中的整数部分。

8. 忽略正负号

如果我们想忽略正负号,只提取数字本身,可以使用 re.findall 结合正则表达式来实现这一目标。以下是一个示例代码:

import re

text = "The temperature is -3.5 degrees Celsius."
result = re.findall(r'-?\d+\.?\d*', text)

numbers = [float(x) for x in result]
print(numbers)

运行上述代码,输出为 [-3.5],即找到了字符串中的数字,并将其转换为浮点数。

9. 结论

通过使用 Python 正则表达式,我们可以方便地提取字符串中的数字。通过灵活运用不同的正则表达式,可以满足各种需要。在实际应用中,我们可以根据需求使用合适的正则表达式来提取、处理和分析数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程