python: 从字符串中提取数字

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(),将字符串转换为整数。



你可能感兴趣的:(python: 从字符串中提取数字)