<aside> 💬 lv0, 요구사항 구현

로그 파일 분석

문제 설명

로그 파일의 각 줄에서 시간 정보와 메시지를 추출하는 함수를 작성해주세요. 각 로그는 다음 형식을 따릅니다: [시간] 메시지. 시간은 시:분:초 형식이며, 메시지는 임의의 텍스트입니다. 함수는 시간과 메시지를 각각 이름이 지정된 그룹 time과 message로 추출해야 합니다.

예를 들어, 로그 "[08:55:45] 사용자 로그인"에서 함수는 {'time': '08:55:45', 'message': '사용자 로그인'}을 반환해야 합니다.


제한 사항


입출력 예

입력 (로그 문자열) 출력 (시간과 메시지의 딕셔너리)
"[08:55:45] 사용자 로그인" {'time': '08:55:45', 'message': '사용자 로그인'}
"[13:01:02] 데이터베이스 접근" {'time': '13:01:02', 'message': '데이터베이스 접근'}
"[23:59:59] 시스템 종료" {'time': '23:59:59', 'message': '시스템 종료'}

입출력 설명

각 로그에서 시간과 메시지를 추출하여 딕셔너리 형태로 반환합니다.

</aside>

😺 풀이 1. 정규표현식 활용

import re

def solution(data):
    pattern = r"\\[(?P<time>\\d{2}:\\d{2}:\\d{2})\\] (?P<message>.+)" **#1 패턴 정의**
    match = re.match(pattern, data) **#2 match 함수 사용**
    if match:
        return match.groupdict() **#3 match.groupdict 함수 사용**
    else:
        return None

단계별 풀이 전략

  1. 패턴 정의

    문자열 패턴을 구분하여 찾아줍니다.

  2. match 함수 사용

    일치하는 문자열을 찾습니다.

  3. match.groupdict 함수 사용

    문자열 패턴에서 그룹을 지정된 그룹을 match.groupdict를 사용하여 딕셔너리로 변환합니다.

알아둬야 할 개념

groupdict

풀이 2. 정규표현식 활용

import re

def solution(data):
    values = re.findall(r"([0-9:]{8})\\] (\\w+\\s\\w+)", data) **#1 패턴 정의, #2 findall 사용**
    time, message = values[0]
    return {"time": time, "message": message} **#3 결과 반환**

단계별 풀이 방법

  1. 패턴 정의

    패턴을 구분하여 만들어 줍니다.

  2. findall 함수 사용

    패턴에 해당하는 문자열을 찾습니다.

  3. 결과 반환

    리스트의 첫 번째 요소를 가져와 시간과 메세지로 구분하여 딕셔너리 형태로 반환합니다.

알아둬야 할 개념

re.findall 함수