您好我想能够提取只是从一个字符串彩车
str = "Test string 1.234 0.155.1 5.67799350,-2.654657
结果应该是
[1.234, 5.67799350, -2.654657]
我正在使用,[-+]?\d*\.\d+|\d+
但它检测到我不想要的0.155.1。
import re
floats = re.findall(r"[-+]?\d*\.\d+|\d+", str)
感谢您的阅读。
采用
[-+]?\b(?<!\d\.)\d+\.\d+\b(?!\.\d)
见证明
匹配不带整数部分(.59
)和粘贴到单词字符(_4.567
)的浮点数的替代方法:
[-+]?(?<!\d\.)(?<!\d)\d*\.\d+(?!\.?\d)
查看其他证明
它与可选的正负号,一个或多个数字,点,一个或多个数字匹配,并用单词边界包裹,并且不在数字点和点数字之间。
Python:
import re
text = 'Test string 1.234 0.155.1 5.67799350,-2.654657'
print([float(i) for i in re.findall(r"[-+]?\b(?<!\d\.)\d+\.\d+\b(?!\.\d)", text)])
结果:
[1.234, 5.6779935, -2.654657]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句