返回

python正则表达式提取数字:Python正则表达式提取数字,从基础到实战

来源:网络   作者:   日期:2025-10-26 14:04:24  

在数据处理和文本分析中,从字符串中提取数字是一项常见且实用的任务,Python的re模块提供了强大的正则表达式功能,能够灵活地匹配和提取各种形式的数字,本文将通过实例演示如何使用正则表达式从文本中提取数字,并探讨常见场景和注意事项。

python正则表达式提取数字:Python正则表达式提取数字,从基础到实战


基础示例:匹配整数

import re
text = "价格是123元,折扣40%。"
pattern = r'\d+'
matches = re.findall(pattern, text)
print(matches)  # 输出:['123', '40']

这里,\d+表示匹配一个或多个数字字符。re.findall()函数会返回所有匹配的结果列表。

python正则表达式提取数字:Python正则表达式提取数字,从基础到实战


匹配浮点数

浮点数包含整数部分、小数点和小数部分,例如14-0.001,可以使用以下正则表达式:

pattern = r'-?\d*\.\d+|\d+'
  • :可选的负号。
  • \d*:零个或多个整数部分。
  • \.\d+:小数点后至少一个数字。
  • :或运算符,匹配整数部分。
text = "圆周率是3.14159,温度-25.5℃。"
matches = re.findall(pattern, text)
print(matches)  # 输出:['3.14159', '-25.5']

匹配科学计数法

科学计数法如23e4-5.67E-8,可以使用以下正则表达式:

pattern = r'[-+]?[0-9]*\.[0-9]+([eE][-+]?\d+)?'
  • [-+]?:可选的符号。
  • [0-9]*:整数部分(可选)。
  • \.[0-9]+:小数点和小数部分。
  • ([eE][-+]?\d+)?:可选的指数部分。
text = "数据范围:1.23e4到-5.67E-8。"
matches = re.findall(pattern, text)
print(matches)  # 输出:['1.23e4', '-5.67E-8']

从复杂文本中提取数字

当文本包含大量非数字字符时,可以结合其他正则表达式功能(如括号分组、忽略空格等)来提取数字。

text = "用户ID: abc123,订单号: 789xyz456,电话: 138-8888-9999"
pattern = r'\d+'
matches = re.findall(pattern, text)
print(matches)  # 输出:['123', '789', '456', '138', '8888', '9999']

注意事项

  1. 转义字符:正则表达式中的特殊字符(如、、等)需要转义,否则会被解释为元字符。
  2. 多行匹配:如果文本包含多行,可以使用re.MULTILINE标志来匹配行首和行尾。
  3. 性能考虑:对于非常大的文本,频繁使用re.findall()可能导致性能问题,可以考虑使用re.finditer()逐个匹配。

Python的正则表达式是提取数字的强大工具,通过灵活组合\d\.e等字符,可以匹配整数、浮点数、科学计数法等多种数字形式,掌握正则表达式的基本语法和常见模式,能够高效地从文本中提取所需数字信息,希望本文能帮助你快速上手Python正则表达式提取数字的功能!

python正则表达式提取数字:Python正则表达式提取数字,从基础到实战

分类: 编程
责任编辑: 今题网
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

相关文章:

文章已关闭评论!