1

I have a string: string = "2017.5 is halfway through the year". Is there a way to extract this "2017.5" from the string? I tried using string.isdigit(), but that only worked for non-floats.

3

3 Answers 3

2

If your float is always expressed in decimal notation something like

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

may suffice.

For parse int and float (point separator) values:

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

result:

['2017.5']
Sign up to request clarification or add additional context in comments.

Comments

1

here is an example using re.match:

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

r'[0-9\.]+' is a regex to extract the group that matches numbers and periods

Comments

0

just a dirty implementation without regex and with the single digit/float per sentence:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.