python如何提取字符串中的数字

python如何提取字符串中的数字

作者:William Gu发布时间:2026-01-14阅读时长:0 分钟阅读次数:4

用户关注问题

Q
如何在Python中查找字符串内的所有数字?

我有一个包含文字和数字的字符串,想要提取出所有的数字部分,该怎么做比较有效?

A

使用正则表达式提取字符串中的数字

可以使用Python的re模块,通过正则表达式\d+来匹配字符串中的所有数字。示例代码如下:

import re
text = '订单编号是AB12345,金额为678元'
numbers = re.findall(r'\d+', text)
print(numbers)  # 输出 ['12345', '678']

这样就能提取出字符串中的每一段连续数字。

Q
如何将提取出来的数字转换为整数或浮点数?

提取出来的数字默认是字符串格式,怎样才能便捷地转换为数字类型?

A

将字符串数字转换为整型或浮点型数据

在获取数字字符串列表后,可以使用Python内置的int()或float()函数进行转换。例如,如果确认提取的是整数,可以用:

int_numbers = [int(num) for num in numbers]

对于包含小数点的数字,可以改用float():

float_numbers = [float(num) for num in numbers]

这能方便后续对数字进行数学运算。

Q
除了正则表达式,还有其他方法提取数字吗?

有没有不使用re模块,纯用Python标准字符串操作来提取数字的办法?

A

用字符串遍历和判断字符方法提取数字

可以通过遍历字符串中的每个字符,判断该字符是否为数字(使用str.isdigit()方法),然后拼接成数字字符串。示例代码如下:

text = '编号X99款2023'
num_str = ''
numbers = []
for ch in text:
    if ch.isdigit():
        num_str += ch
    else:
        if num_str:
            numbers.append(num_str)
            num_str = ''
if num_str:
    numbers.append(num_str)
print(numbers)  # 输出 ['99', '2023']

该方法不依赖额外模块,适合简单场景。