如何打印文件中的某个句子?

How do I print a certain sentence from a file?

我正在尝试从 python 中的外部文件打印某个句子。该文件是一个 .log 文件。

文件是这样写的:

[Mon Dec 05 14:01:48 2005] [notice] workerEnv.init() ok /etc/httpd/conf/workers2.properties
[Mon Dec 05 14:01:48 2005] [error] mod_jk child workerEnv in error state 7

我想打印第一个 [ ] 中的所有内容以及 [notice] 或 [error] 之后的所有内容。 我想我需要使用 split 命令,但我不知道如何使用。

您可以这样做,但可能不是最快的方法...

text = ['[Mon Dec 05 14:01:48 2005] [notice] workerEnv.init() ok /etc/httpd/conf/workers2.properties',
        '[Mon Dec 05 14:01:48 2005] [error] mod_jk child workerEnv in error state 7']

for line in text:
    kw = '[notice]' if line.find('[notice]') >= 0 else '[error]' if line.find('[error]') >= 0 else None
    # Filter out every line which does not contain '[notice]' or '[error]'
    if kw:
        tmp = line.split(kw)
        # [1:-2] is needed to get rid of the '[' and ']'
        print(tmp[0][1:-2], tmp[1])

像这样的东西应该可以工作:

import re

with open('logfile.log') as logfile:
    for line in map(str.strip, logfile):
        m = re.findall('\[.*?\]', line)
        if len(m) > 1 and m[1] in ('[notice]', '[error]'):
            offset = line.find(m[1]) + len(m[1]) + 1
            print(m[0], line[offset:])

注:

这里没有有效性检查。如果日志文件中的一行与问题中显示的格式不完全匹配,这可能会失败