如何从字符串中提取整数或浮点数

时间:2018-10-11 06:13:54

标签: python python-3.x

我在string中得到了诸如20.5 mg20 mg之类的剂量强度值。我只想提取整数或浮点值。

以下是我到目前为止尝试过的

def parseint(self,string):
   return int(''.join([x for x in string if x.isdigit()]))   

但这并非在所有情况下都有效。

ex1)

parseint('2 mg')
o/p- 2

ex2)

parseint('10.2 mg')
o/p - 102 

预期输出:

i/p "20.5 MG" o/p- 20.5
i/p "20.0 MG" o/p - 20.0
i/p "20.0 MG" o/p - 20.0

3 个答案:

答案 0 :(得分:2)

使用正则表达式。

例如:

import re


def parseint(string):
    m = re.search(r"(\d*\.?\d*)", string)
    return m.group() if m else None

s1 = "20.5 mg,"
s2 = "20 mg"

print(parseint(s1))
print(parseint(s2))

输出:

20.5
20

答案 1 :(得分:0)

def parseint(string):
    return float(''.join([x for x in string if x.isdigit() or x == '.']))

类似的事情应该起作用。

答案 2 :(得分:0)

使用具有.split(), float , and int的列表理解

res = [float(i.split()[0]) if '.' in i else int(i.split()[0]) for i in lst]

详细说明

lst = ['2 mg', '10.2 mg', '20.5 MG']
for i in lst:
    if '.' in i:
        print(float(i.split()[0]))
    else:
        print(int(i.split()[0]))
# 2
# 10.2
# 20.5