在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ python如何優(yōu)雅的解析出這段日志信息

python如何優(yōu)雅的解析出這段日志信息

日志信息如下:

{ reason= score=0.0 activetime=2016-11-11 20:34:00 feature={"timestamp":"1510230659436","longitude":39.806193,"latitude":116.490655,"cityid":"1"} uuid=B320173637BA90F740BEB610460DDEE47A95D32A51D4D44167BB4B4D48E03E2A isnew=false}

想解析成

{'reason':'',
'score':'0.0',
'activetime':'2016-11-11 20:34:00',
'feature':'{"timestamp":"1510230659436","longitude":39.806193,"latitude":116.490655,"cityid":"1"}',
'uuid':'B320173637BA90F740BEB610460DDEE47A95D32A51D4D44167BB4B4D48E03E2A',
'isnew':'false'}

我目前想到的方法:

 88     seq = re.compile(r'\w+=')
 89     keys = seq.findall(info)
 90     # 去掉=號
 91     keys = map(lambda _ : _[0 : -1], keys)
 92     values = seq.split(info)[1 : ]
 93     info_map = dict(zip(keys, values))
 94     print info_map
回答
編輯回答
枕頭人

88 seq = re.compile(r'w+=')
89 keys = seq.findall(info)
90 # 去掉=號
91 keys = map(lambda _ : _[0 : -1], keys)
92 values = seq.split(info)[1 : ]
93 info_map = dict(zip(keys, values))
94 print info_map

2017年1月9日 23:15
編輯回答
葬愛

python3

import re
info = '{ reason= score=0.0 activetime=2016-11-11 20:34:00 feature={"timestamp":"1510230659436","longitude":39.806193,"latitude":116.490655,"cityid":"1"} uuid=B320173637BA90F740BEB610460DDEE47A95D32A51D4D44167BB4B4D48E03E2A isnew=false}'
p=re.compile(r'(\w+)=([^=]*)(?= \w+=|})')
d = dict(p.findall(info))
print(d)
#{'reason': '', 'score': '0.0', 'uuid': 'B320173637BA90F740BEB610460DDEE47A95D32A51D4D44167BB4B4D48E03E2A', 'isnew': 'false', 'feature': '{"timestamp":"1510230659436","longitude":39.806193,"latitude":116.490655,"cityid":"1"}', 'activetime': '2016-11-11 20:34:00'}
2018年2月28日 04:03
編輯回答
尛曖昧

你這樣處理之后的false后面是不是多了個},我試著處理好像不太優(yōu)雅

2018年9月6日 12:29
編輯回答
故林

把空格全部替換為 “,” 把 “=“替換為 ":" 可以當成json來處理

2018年7月22日 21:59
編輯回答
陪她鬧
from functools import reduce
from collections import OrderedDict
import pprint
log_str = '''{ reason= score=0.0 activetime=2016-11-11 20:34:00 feature={"timestamp":"1510230659436","longitude":39.806193,"latitude":116.490655,"cityid":"1"} uuid=B320173637BA90F740BEB610460DDEE47A95D32A51D4D44167BB4B4D48E03E2A isnew=false}'''

def foo(i0, i1):
    if i1 in ['{', '}']:pass
    elif '=' in i1:
        i0[i1.split('=')[0]] = i1.split('=')[1]
    else:
        i0[list(i0.keys())[len(i0.keys())- 1]] += ' ' +i1
    return i0

pprint.pprint(reduce(foo, log_str.split(' '), OrderedDict()))
# pprint.pprint(dict(reduce(foo, log_str.split(' '), OrderedDict())))
2018年6月8日 23:52