Python用正则表达式解析字符串构成字典

2024-09-22 14:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Python中提取以下字符串来组成字典:

2014:02:02-12:24:17 NAMETEST ulogd[4834]: id="xxxx" severity="xxxx" sys="xxxx" sub="xxxx" name="xxxx aaaa" action="xxxx" fwrule="xxxx" outitf="xxxx" srcmac="xxxx" srcip="xxxx" dstip="xxxx" proto="x" length="xxxx" tos="xxxx" prec="xxxx" ttl="xx" srcport="xxxx" dstport="xxxx" tcpflags="xxxx"

我不将split(' ')与空格一起使用,因为例如,字段{}可以包含空格。在

首先,使用以下正则表达式,我只提取了数据:

re.findall('"([^"]*)"', line)

但是现在我需要使用一种字典格式,比如:line['id'] = 1111。在

那么正则表达式呢?你有主意吗?在


Tags: 字符串nameid字典syslineaction空格
1条回答
网友
1楼 · 发布于 2024-09-22 14:24:39

{a1}可以使用值^ a1查找键对:

>>> import re
>>> groups = re.findall(r'(\w+)="(.*?)"', s)
>>> line = dict(groups)
>>>
>>> from pprint import pprint
>>> pprint(line)
{'action': 'xxxx',
 'dstip': 'xxxx',
 'dstport': 'xxxx',
 'fwrule': 'xxxx',
 'id': 'xxxx',
 'length': 'xxxx',
 'name': 'xxxx aaaa',
 'outitf': 'xxxx',
 'prec': 'xxxx',
 'proto': 'x',
 'severity': 'xxxx',
 'srcip': 'xxxx',
 'srcmac': 'xxxx',
 'srcport': 'xxxx',
 'sub': 'xxxx',
 'sys': 'xxxx',
 'tcpflags': 'xxxx',
 'tos': 'xxxx',
 'ttl': 'xx'}

(\w+)="(.*?)"将匹配一个或多个字母数字字符(\w+部分),后跟=",后跟任何字符(.*?,非贪心),然后是"。这里的圆括号定义capturing groups。在

相关问题 更多 >