📜  Python|从给定的字符串中提取数字(1)

📅  最后修改于: 2023-12-03 15:04:23.851000             🧑  作者: Mango

Python | 从给定的字符串中提取数字

有时候我们需要从一个字符串中提取数字,这在数据分析和数字处理时是很常见的。Python提供了很多方法来提取数字,下面将介绍几种常用的方法。

方法一:使用正则表达式re模块

使用re模块可以方便地从字符串中提取数字。以下代码使用了re模块的findall()函数,该函数返回字符串中所有匹配正则表达式的子串,包括数字。

import re

text = "a1b2c3d4e5f6g7h8i9"
numbers = re.findall(r'\d+', text)

print(numbers)

这里使用了正则表达式r'\d+',表示匹配任意连续数字,加号表示匹配一个或多个连续数字。上述代码的输出为:

['1', '2', '3', '4', '5', '6', '7', '8', '9']
方法二:使用filter()函数和isdigit()方法

filter()函数可以用来过滤一个序列中的元素,当函数返回True时,该元素会被保留。isdigit()方法可以判断一个字符串是否全为数字,这里可以将isdigit()作为过滤函数,得到一个仅包含数字的序列。

text = "a1b2c3d4e5f6g7h8i9"
numbers = filter(str.isdigit, text)

print(list(numbers))

该代码的输出与上述正则表达式匹配的代码输出相同:

['1', '2', '3', '4', '5', '6', '7', '8', '9']
方法三:使用isdigit()方法和列表推导式

isdigit()方法同样可以用于判断一个字符串是否全为数字,利用这一点,可以使用列表推导式来得到仅包含数字的列表。

text = "a1b2c3d4e5f6g7h8i9"
numbers = [char for char in text if char.isdigit()]

print(numbers)

该代码的输出与上述两种方法输出相同:

['1', '2', '3', '4', '5', '6', '7', '8', '9']

以上就是几种常用的从字符串中提取数字的方法,读者可以根据实际需求选择适合自己的方法。