我想找到出现在使用Python 3如何在字符串中找到一个float - Python?
我看着其他类似的问题,但是我无法理解他们,当我试图实现他们,他们并没有对我的工作的情况下字符串的第一个浮。
的示例串是
I would like 1.5 cookies please
我想找到出现在使用Python 3如何在字符串中找到一个float - Python?
我看着其他类似的问题,但是我无法理解他们,当我试图实现他们,他们并没有对我的工作的情况下字符串的第一个浮。
的示例串是
I would like 1.5 cookies please
我敢肯定有更优雅的解决方案,但是这一个适用于您的具体情况:
s = 'I would like 1.5 cookies please'
for i in s.split():
try:
#trying to convert i to float
result = float(i)
#break the loop if i is the first string that's successfully converted
break
except:
continue
print(result) #1.5
希望它能帮助!
如果您预计空格隔开的十进制花车,使用str
方法和删除-+.
:
s = 'I would like 1.5 cookies please'
results = [t for t in s.split()
if t.lstrip('+-').replace('.', '', 1).isdigit()]
print(results[0]) #1.5
lstrip
用于去除仅在文本左侧的标志,并使用第三个参数replace
仅替换文本中的一个点。确切的实现取决于你希望如何格式化浮点数(支持符号之间的空白等)。
真的很好的答案!不需要'正则表达式'并且可以识别负号和非十进制格式的数字(+1) –
这可以完美地回答这个问题,但对于用户定义的“浮点数”可能有点过于宽泛。用's =“来试试''无限远比3个饼干更好。”'例如:) – pistache
@pistache是的,完美的观察,与['nan']相同(https://docs.python.org/3/library/ functions.html#浮动)。我发现用户的问题[这里](https://stackoverflow.com/questions/4703390/how-to-extract-a-floating-number-from-a-string)和[这里](https: //stackoverflow.com/questions/385558/extract-float-double-value),他们解决了很多问题。 –