0

PUT_LOG タグが見つかるたびに PUT_LOG タグから (LOG_LEVEL_DEBUG, CAPTIVE_RECVD_SIGCHLD) を抽出しようとしています。その中の情報を抽出して別のファイルに入れたいだけです。

情報を抽出したい場所からコード スニペットを見つけてください...

PUT_LOG(LOG_LEVEL_DEBUG, CAPTIVE_EXECUTE_CMD,1,STRING, cmd);
PUT_LOG(LOG_LEVEL_DEBUG, CAPTIVE_EXECUTE_CMD,1,STRING, cmd);
PUT_LOG(LOG_LEVEL_DEBUG_ERR, CAPTIVE_EXECUTE_CMD_FAILED,1, STRING, cmd);
enter code here

my out put should be like this 

LOG_LEVEL_DEBUG
CAPTIVE_EXECUTE_CMD
LOG_LEVEL_DEBUG_ERR
CAPTIVE_EXECUTE_CMD_FAILED

私はこのようなコードを書きました..変更して、正確なコードを教えてください.

#!/usr/bin/env python


inFile = open("data.c")
outFile = open("result.txt", "w")

buffer = []
keepCurrentSet = True
for line in inFile:
    buffer.append(line)
    if line.startswith("PUT_LOG"):
        #---- starts a new data set
        if keepCurrentSet:
            outFile.write("".join(buffer))
        #now reset our state
        keepCurrentSet = False
        buffer = []
    elif line.startswith("LOG_LEVEL_DEBUG"):
        keepCurrentSet = True
inFile.close()
outFile.close()
4

1 に答える 1

0

input-file file_in、 output-file 、およびsource-file から抽出する文字列file_outのリストを引数として指定すると、 の任意の行について、間に含まれる括弧が何であれ、リストと照合してクロスチェックします受け入れられた文字列の、それを(新しい行に)追加します:strings_to_filterextract_lines(file_in, file_out, strings_to_filter)file_inPUT_LOG(...);strings_to_filterout.txt

import os
import re


def extract_lines(file_in, file_out, strings_to_filter):
    with open(file_in) as f_in, open(file_out, "a+") as f_out:
        for line in f_in:
            res = re.search("(PUT_LOG\()(.*)(\)\;)", line)
            if res is not None:
                i = 0
                for segment in res.group(2).split(","):
                    segment = segment.strip()
                    if segment in strings_to_filter and i < 2:
                        print(segment, file=f_out)
                        i += 1

extract_lines(
                  os.path.realpath("path/to/log_file.txt"),
                  os.path.realpath("path/to/output_file.txt"),
              [
               "CAPTIVE_EXECUTE_CMD",
               "CAPTIVE_EXECUTE_CMD_FAILED",
               "CAPTIVE_RECVD_SIGCHLD",
               "LOG_LEVEL_DEBUG",
               "LOG_LEVEL_DEBUG_ERR"
               ]
              )
于 2013-03-12T06:28:36.397 に答える