Python 提取浮点/双精度值

Python 提取浮点/双精度值,python,regex,Python,Regex,如何使用正则表达式从字符串中提取双精度值 import re pattr = re.compile(???) x = pattr.match("4.5") 来自以下位置的regexp: 要从较大的字符串中提取数字,请执行以下操作: s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 1.01e-.2 abc 123 abc .123""" print re.findall(r"[+

如何使用正则表达式从字符串中提取双精度值

import re

pattr = re.compile(???)    
x = pattr.match("4.5")      
来自以下位置的regexp:

要从较大的字符串中提取数字,请执行以下操作:

s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 
       1.01e-.2 abc 123 abc .123"""
print re.findall(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", s)
# -> ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2',
#     '       1.01', '-.2', ' 123', ' .123']

这是简单的方法。不要对内置类型使用正则表达式

try:
    x = float( someString )
except ValueError, e:
    # someString was NOT floating-point, what now?

在蛮力中作为正则表达式的浮点。与J.F.Sebastian版本的差异较小:

import re
if __name__ == '__main__':
  x = str(1.000e-123)
  reFloat = r'(^[+-]?\d+(?:\.\d+)?(?:[eE][+-]\d+)?$)'
  print re.match(reFloat,x)

>>> <_sre.SRE_Match object at 0x0054D3E0>
重新导入
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
x=str(1.000e-123)
回流=r'(^[+-]?\d+(?:\。\d+)(?:[eE][+-]\d+)'
打印重新匹配(回流,x)
>>> 
解析int和float(点分隔符)值:

结果:

['12', '12.3', '0', '0.8']

你能提供一些关于为什么不能使用浮点(“4.5”)的详细信息吗?这与没有整数部分的浮点不匹配,例如
.123
而不是
0.123
。如果你可以提供一个获取int或float的过程,但不在字典或数组中,那么它会很有帮助。我所拥有的
str1=“BIOS:version 2.0.0”
我想要的
2.0.0
没有任何逗号或括号。您好,您可以像这样使用:re.findall(r'[\d\.]+',“BIOS:version 2.0.0”)更好:re.findall(r'[\d\.]{2,}\d+',“BIOS:version 2.0.0”)简单而准确实际上,这也是最安全的方法。考虑一些错误的输入,如<代码> 0…1 /代码>,代码> 0.0.02,ReGEX很难识别它。更糟糕的是,它会假装它是正确的,并产生一些错误的答案。技术上是正确的,但问题明确指定了regexp。
re.findall( r'\d+\.*\d*', 'some 12 12.3 0 any text 0.8' )
['12', '12.3', '0', '0.8']