Py学习  »  Python

python regex-从包含数字和字符的字符串中提取数字

user3206440 • 5 年前 • 1813 次点击  

我有一些字符串,比如'ms2p5','ms3','ms10',我需要提取这些数字,转换成数字,如下所示。

'ms2p5' => 2.5
'ms3' => 3
'ms10' => 10

我试了下面的正则表达式,它能得到匹配。一个问题是值在提取的字符串中间有一个字符,如“2p5”。在将所有这些情况转换为数值时,使用泛型函数处理所有这些情况的正确方法是什么?

import re
re.search(r'\d+[p]*\d*', str).group() 
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53343
文章 [ 3 ]  |  最新文章 5 年前
Haleemur Ali
Reply   •   1 楼
Haleemur Ali    5 年前

x = 'ms2p5'
float(x[2:].replace('p', '.'))
Nick
Reply   •   2 楼
Nick    5 年前

p 对于小数点,替换为 第页 . 然后转换成浮点数。例如:

import re

def extract_num(s):
    return float(re.search(r'\d+p?\d*', s).group().replace('p', '.'))

strs = ['ms2p5', 'ms3', 'ms10']
print([extract_num(s) for s in strs])

输出:

[2.5, 3.0, 10.0]
U10-Forward - Reinstate Monica
Reply   •   3 楼
U10-Forward - Reinstate Monica    5 年前

使用 str.join re.findall :

los = ['ms2p5', 'ms3', 'ms10']
print([float('.'.join(re.findall('\d+', i))) for i in los])

输出:

[2.5, 3.0, 10.0]