gpt4 book ai didi

python - 对于特殊文本来说,最好的 python 正则表达式是什么?

转载 作者:行者123 更新时间:2023-11-30 22:35:27 26 4
gpt4 key购买 nike

你好,我有一个日志文件,文件内容如下:

[ 06-15 14:07:48.377 15012:15012 D/ViewRootImpl ]
ViewPostImeInputStage processKey 0

[ 06-15 14:07:48.397 3539: 4649 D/AudioService ]
active stream is 0x8

[ 06-15 14:07:48.407 4277: 4293 D/vol.VolumeDialogControl.VC ]
isSafeVolumeDialogShowing : false

我想从日志文件中提取一些信息。预期格式如下:

[('06-15 14:07:48.377', '15012', 'D', 'ViewRootImpl', 'ViewPostImeInputStage processKey 0'),
('06-15 14:07:48.397', '3539', '4649', 'D', 'AudioService', 'active stream is 0x8'),
('06-15 14:07:48.407', '4277', '4293', 'D', 'vol.VolumeDialogControl.VC', 'isSafeVolumeDialogShowing : false')]

问题:用于提取预期格式信息的最佳 python 正则表达式是什么?非常感谢!

更新:我已经尝试过以下代码

import re
regex = r"(\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s(\d+).*(\w{1})/(.*)\](.*)"
data = [g.groups() for g in re.finditer(regex, log, re.M | re.I)]

我得到的结果是

data=[('06-15 14:07:48.377', '15012', 'D', 'ViewRootImpl', '\r'), (
'06-15 14:07:48.397', '3539', 'D', 'AudioService', '\r'), ('06-15 14:07:48.407',
'4277', 'D', 'vol.VolumeDialogControl.VC', '\r')]

我无法获取最后一个元素。

最佳答案

使用以下方法:

with open('yourlogfile', 'r') as log:
lines = log.read()
result = re.sub(r'^\[ (\S+) *(\S+) *(\d+): *(\d+) *([A-Z]+)\/(\S+) \]\n([^\n]+)\n?',
r'\1 \2 \3 \4 \5 \6 \7', lines, flags=re.MULTILINE)

print(result)

输出:

06-15 14:07:48.377 15012 15012 D ViewRootImpl ViewPostImeInputStage processKey 0
06-15 14:07:48.397 3539 4649 D AudioService active stream is 0x8
06-15 14:07:48.407 4277 4293 D vol.VolumeDialogControl.VC isSafeVolumeDialogShowing : false
<小时/>

要获取匹配列表形式的结果,请使用 re.findall() 函数:

...
result = re.findall(r'^\[ (\S+) *(\S+) *(\d+): *(\d+) *([A-Z]+)\/(\S+) \]\n([^\n]+)\n?', lines, flags=re.MULTILINE)
print(result)

输出:

[('06-15', '14:07:48.377', '15012', '15012', 'D', 'ViewRootImpl', 'ViewPostImeInputStage processKey 0'), ('06-15', '14:07:48.397', '3539', '4649', 'D', 'AudioService', 'active stream is 0x8'), ('06-15', '14:07:48.407', '4277', '4293', 'D', 'vol.VolumeDialogControl.VC', 'isSafeVolumeDialogShowing : false')]

关于python - 对于特殊文本来说,最好的 python 正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44566648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com