开发者

Extracting Values from a String

开发者 https://www.devze.com 2022-12-17 00:53 出处:网络
I am trying to extract values from a string, I have tried to get re.match working but have not had any luck. The string is:

I am trying to extract values from a string, I have tried to get re.match working but have not had any luck. The string is:

'/开发者_StackOverflow中文版opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'

I have tried:

 map(int,re.search("Value\s*=\s*").group(1))

and also:

'/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'.split(' = ')

I am not sure what else to add or do. I want to retrieve the attributes 'Value, Max, Step' and their values. Is there anyway to do this?

Thanks for any help


For that particular string, the following parses it into a dictionary:

s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
d = {}
for pair in [val.split('=') for val in s.split('\r\n')[1:-1]]:
    d[pair[0]] = int(pair[1])


>>> s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
>>> bits = s.split('\r\n')
>>> val, max_val, step = [int(bits[i].partition(' = ')[2]) for i in [1, 3, 4]]
>>> val
1800
>>> max_val
3600
>>> step
1


s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
data = {}

for l in s.split('\r\n'):
     if " = " in l:
             k,v = l.split(" = ")
             data[k] = int(v)

print data


You are trying to use regexp, but I think you can simply split it by \r\n and then use values with =.

Something like:

s = '/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
dct = {}
arr = [ss for ss in s.split('\r\n') if '=' in ss]
for e in arr:
    k, v = e.split(' = ')
    dct[k] = v
print dct
0

精彩评论

暂无评论...
验证码 换一张
取 消