如何从字符串中提取浮点数

时间:2017-06-08 05:41:23

标签: python string

我有一个字符串:string = "2017.5 is halfway through the year"。有没有办法从字符串中提取这个"2017.5"?我尝试使用string.isdigit(),但这只适用于非浮动。

4 个答案:

答案 0 :(得分:2)

如果你的浮点数总是以十进制表示法表示,比如

>>> import re
>>> re.findall("\d+\.\d+", "2017.5 is halfway through the year")
['2017.5']

可能就够了。

对于parse int和float(点分隔符)值:

re.findall( r'\d+\.*\d*', '2017.5 is halfway through the year' )

结果:

['2017.5']

答案 1 :(得分:0)

这是使用re.match的示例:

>>> import re
>>> ok = '2017.5 and some stuff'
>>> hmm = re.match(r'[0-9\.]+', ok)
>>> hmm.group()
'2017.5'

r'[0-9\.]+'是一个正则表达式,用于提取与数字和句点匹配的组

答案 2 :(得分:0)

我没有足够的声誉来发表评论,但我不得不说jmunsch的正则表达式有时会导致错误,[0-9。] +可能会提取类似.2.3.1和1.0的内容。 2.6,实际上不是您希望提取的表格中的浮动数字。

答案 3 :(得分:0)

只是一个没有正则表达式的脏实现,每个句子有一个数字/浮点数:

s = "new 2017.5 is halfway through the year1"

def process(all,new):

    def is_float_try(str):
        try:
            float(str)
            return True
        except ValueError:
            return False

    return new if new.isdigit() or is_float_try(new) else all

print reduce(process,s.split(),'')
# 2017.5