regex string matching python3

Brian J. Oney brian.j.oney at googlemail.com
Mon Oct 1 17:39:51 EDT 2018


On Mon, 2018-10-01 at 10:49 -0700, nanman3012 at gmail.com wrote:
> I have a string like this: 
> 
> b'\tC:94.3%[S:89.9%,D:4.4%],F:1.7%,M:4.0%,n:1440\n'
> 
> And I would like to  extract the numbers corresponding to S,D,F and M in this string and convert them into an array like this: 
> 
> [ '89.9', '4.4', '1.7', '4.0']
> 
> Any help would be appreciated! 
Hi there,

import re

s = b'\tC:94.3%[S:89.9%,D:4.4%],F:1.7%,M:4.0%,n:1440\n'

pattern = re.compile('S:([0-9.]+)%,D:([0-9.]+)%\],F:([0-9.]+)%,M:([0-9.]+)')

stuff = [x for x in re.findall(pattern, s)[0]]

You may consider just getting everthing out of your string and then munging it to what ever you like.

I mean:

pattern = re.compile('([A-Za-z]):([0-9.]+)')
{x: float(y) for x, y in re.findall(pattern, s)


Then you could read what ever and put it in a handy format wherein it is clear what it was. I mean:

stuff = []
for s in iostream:
    stuff.append({x: float(y) for x, y in re.findall(pattern, s)})


HTH



More information about the Python-list mailing list