我有一个解析日志中的行列表,如下所示:
parsedLog = ['20151005 09:11:14 LOG_ID 00000000', '20151005 09:11:14 LOG_ADDR 0173acc4\n Address of log', '20151005 09:11:14 READ_CONFIG 00000105',
我正在寻找一种最干净的方法,根据字符串LOG_ADDR
(即key)从列表中的第二个元素中提取值0173acc4
(原因是日志并不总是一致的)。你知道吗
我目前正在使用以下一行:
filter(lambda line: 'LOG_ADDR' in line, parsedLog)[0].split('\n')[-8:]
你可以用正则表达式。你知道吗
\S+
匹配一个或多个非空格字符。所以这个\S+(?=\n)
只有在后跟换行符时才会匹配一个或多个非空格字符。Lookaheads是一种断言,它不使用任何单个字符,而是断言匹配是否可能。你知道吗或者
将
print
stmt改为或者
或者
列表理解:
或扩展,更干净、更可读,并且更快,因为
split()
不会执行两次:它获取
LOG_ADDR
之后的值,假设条件是常量。你知道吗line_split.index("LOG_ADDR") + 1
在拆分的行中为您提供索引,我们在其中添加一个索引以获取下一项相关问题 更多 >
编程相关推荐