python如何只留下数字

python如何只留下数字

作者:Rhett Bai发布时间:2026-01-06阅读时长:0 分钟阅读次数:24

用户关注问题

Q
如何在Python中提取字符串中的数字?

我有一个包含字母和数字的字符串,想要提取其中所有的数字,该怎么做?

A

使用正则表达式提取数字

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

import re
s = 'abc123def456'
numbers = re.findall(r'\d+', s)
print(numbers)  # 输出 ['123', '456']

这样可以获取字符串中所有连续的数字部分。

Q
如何在Python字符串中只保留数字字符?

我想把字符串中的所有非数字字符移除,只留下数字部分,有没有简单的方法?

A

使用字符串过滤和isdecimal方法

可以通过列表推导式结合字符串的isdecimal()或isdigit()方法来实现:

s = 'a1b2c3d4'
numbers_only = ''.join([ch for ch in s if ch.isdecimal()])
print(numbers_only)  # 输出 '1234'

这种方法会构造一个只包含数字字符的新字符串。

Q
除了正则表达式,还有哪些方法可以保留字符串中的数字?

我不太熟悉re模块,想知道还有没有其他方便的方式实现只保留数字的功能?

A

利用filter函数结合str.isdigit方法

Python的filter函数也能达到目的,示例如下:

s = 'abc123xyz456'
numbers_only = ''.join(filter(str.isdigit, s))
print(numbers_only)  # 输出 '123456'

用filter和str.isdigit函数过滤出数字字符,再连接成字符串。