<aside>
💬 lv0
, 요구사항 구현
로그 파일의 각 줄에서 시간 정보와 메시지를 추출하는 함수를 작성해주세요. 각 로그는 다음 형식을 따릅니다: [시간] 메시지
. 시간은 시:분:초
형식이며, 메시지는 임의의 텍스트입니다. 함수는 시간과 메시지를 각각 이름이 지정된 그룹 time
과 message
로 추출해야 합니다.
예를 들어, 로그 "[08:55:45] 사용자 로그인"에서 함수는 {'time': '08:55:45', 'message': '사용자 로그인'}
을 반환해야 합니다.
import re
만 입력하여 한 번 실행하면 그 다음 코드부터 import re
를 하지 않아도 사용 가능합니다. solution 함수 내에 re 모듈을 사용하셔도 애러가 나지 않습니다. 코드 내에는 solution 함수만 있어야 하므로 이 2개가 있지 않도록 주의해주세요. 어려우신 분은 제주코딩베이스캠프
유튜브 채널 33번 문제 영상을 참고해주세요.입력 (로그 문자열) | 출력 (시간과 메시지의 딕셔너리) |
---|---|
"[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>
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
패턴 정의
문자열 패턴
을 구분하여 찾아줍니다.
match 함수 사용
일치하는 문자열
을 찾습니다.
match.groupdict 함수 사용
문자열 패턴
에서 그룹을 지정된 그룹을 match.groupdict
를 사용하여 딕셔너리
로 변환합니다.
groupdict
기본 형태: match.groupdict()
개념: 정규표현식에서 이름을 가진 그룹에 매칭된 문자열을 사전 형태로 반환하는 함수입니다.
import re
# 정규표현식 패턴 설정
pattern = re.compile(r"(?P<area>\\d{3})-(?P<middle>\\d{4})-(?P<end>\\d{4})") # 전화번호 패턴
# 주어진 문자열
text = "전화번호는 010-1234-5678 입니다."
# 컴파일된 정규표현식을 사용하여 문자열에서 패턴과 일치하는 부분을 찾기
match = pattern.search(text)
print(match.groupdict()) # 출력: {'area': '010', 'middle': '1234', 'end': '5678'}
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 결과 반환**
패턴 정의
패턴
을 구분하여 만들어 줍니다.
findall 함수 사용
패턴
에 해당하는 문자열을 찾습니다.
결과 반환
리스트
의 첫 번째 요소를 가져와 시간과 메세지로 구분하여 딕셔너리
형태로 반환합니다.
re.findall 함수