python re.search

时间:2012-12-07 07:40:56

标签: python-3.x python-2.7

line=a name="12123" adfii  41:05:992 wp=wp2 this is the rate: controlled not max; time=300 loops for the system: process=16.0 sharesize=6b2k .

在等号之前和之后重新搜索线条的最佳方法是什么。例如,我想留下名字= 12123时间= 300进程= 16.0 sharesize = 6b2k。然后放入字典

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

#!python3

import re

line = 'line=a name="12123" adfii  41:05:992 wp=wp2 this is the rate: controlled not max; time=300 loops for the system: process=16.0 sharesize=6b2k'

pattern = r'(\w+)=(\w+|".+?")'

lst = re.findall(pattern, line)
print(lst)

d = dict(lst)
print(d)
print(d['process'])

它在我的屏幕上打印以下内容:

c:\tmp\___python\njau_ndirangu\so13758903>py a.py
[('line', 'a'), ('name', '"12123"'), ('wp', 'wp2'), ('time', '300'), ('process', '16'), ('sharesize', '6b2k')]
{'line': 'a', 'sharesize': '6b2k', 'time': '300', 'name': '"12123"', 'process': '16', 'wp': 'wp2'}
16

当然,您可以直接写信:

d = dict(re.findall(r'(\w+)=(\w+|".+?")', line))

.findall返回匹配列表,其中一个匹配表示为元组,子组为元素(模式中括号内的东西)。

但要注意正则表达式。你很容易犯错误。