从字符串中提取浮点数 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)
我有一个看起来像这样的字符串:
'< 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)