从字符串中提取浮点数 Python

Extract a float from a string Python

我有一个看起来像这样的字符串:

'< 5s' or '< 0.5s'

我正在尝试从字符串中提取 'duration'。我已经有了这个:

a = '< 5s'
b = int(list(filter(str.isdigit, a))[0])
print(b)

但如果我使用 '< 0.5s' 它 returns 我 0。如何将 , 包含在数字中?

使用简单的正则表达式:

import re

s = '< 0.5s'
dur = re.search(r'-?\d+(\.\d+)?', s).group()
print(dur)   # 0.5
import re
b = re.sub("[^\d\.]", "", a)

一个简单的 b = float(a[2:-1]) 应该可以解决问题,如果您确定字符串的格式始终与您的示例中所示完全一致。

你可以使用 regex,也许是这样的:

#!/usr/bin/python3
import re
inp="< 0.5s 5s -12z34 -6.7s"
for i in re.findall("-?\d+\.\d+|-?\d+", inp):
    print(i)