python: 从字符串中提取数字

本文介绍如何使用Python从字符串中提取数字,包括正则表达式和简单字符串操作两种方法,并对比了它们的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python: 从字符串中提取数字 

如果只想提取正整数,请尝试以下操作:


>>> str ="h3110 23 cat 444.4 rabbit 11 2 dog"
>>> [int(s) for s in str.split() if s.isdigit()]
[23, 11, 2]


我认为这比 正规表达式 示例更好,原因有三个。 首先,你不需要另一个模块;其次,因为你不需要解析 正规表达式 mini-language,所以它更具可读性;第三,它是更快的( 因此可能更多 Pythonic ):


python -m timeit -s"str = 'h3110 23 cat 444.4 rabbit 11 2 dog' * 1000""[s for s in str.split() if s.isdigit()]"
100 loops, best of 3: 2.84 msec per loop

python -m timeit -s"import re""str = 'h3110 23 cat 444.4 rabbit 11 2 dog' * 1000""re.findall('\b\d+\b', str)"
100 loops, best of 3: 5.66 msec per loop

我将使用正则表达式:


>>> import re
>>> re.findall(r'd+', 'hello 42 I'm a 32 string 30')
['42', '32', '30']


这也与 bla42bla 42相匹配。 如果只需要用单词边界( 空格,句号,逗号) 分隔的数字,你可以使用 b:


>>> re.findall(r'bd+b', 'he33llo 42 I'm a 32 string 30')
['42', '32', '30']


delnan有一个好的点( 查看评论): 你可以通过列表映射 int(),将字符串转换为整数。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值