我在string中得到了诸如20.5 mg
,20 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
答案 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