<aside>
💬 lv0
, 정규표현식
주어진 문자열에서 날짜 형식(YYYY-MM-DD
)을 찾고, 연도, 월, 일을 각각 그룹으로 추출하는 함수를 작성해주세요. 문자열은 여러 날짜 형식을 포함할 수 있으며, 각 날짜의 연도, 월, 일을 튜플 형태로 리스트에 담아 반환합니다.
예를 들어, 문자열 "2024-01-20에 약속이 하나 있고 다른 약속은 2023-12-31이야!" 문장에서 함수는 [(2024, 01, 20), (2023, 12, 31)]
을 반환해야 합니다.
import re
만 입력하여 한 번 실행하면 그 다음 코드부터 import re
를 하지 않아도 사용 가능합니다. solution 함수 내에 re 모듈을 사용하셔도 애러가 나지 않습니다. 코드 내에는 solution 함수만 있어야 하므로 이 2개가 있지 않도록 주의해주세요. 어려우신 분은 제주코딩베이스캠프
유튜브 채널 33번 문제 영상을 참고해주세요.YYYY-MM-DD
형식을 따릅니다.입력 (문자열) | 출력 (날짜의 연도, 월, 일 튜플 리스트) |
---|---|
"The event will happen on 2024-01-20." | [(2024, 01, 20)] |
"Dates: 2023-12-31, 2024-01-01, and 2024-02-28." | [(2023, 12, 31), (2024, 01, 01), (2024, 02, 28)] |
"No dates here." | [] |
첫 번째 예시에서 문자열은 "2024-01-20"이라는 날짜를 포함합니다. 두 번째 예시에서 문자열은 세 개의 날짜를 포함합니다. 세 번째 예시에서는 유효한 날짜가 없으므로 빈 리스트를 반환합니다.
</aside>
import re
def solution(data):
pattern = r"(\\d{4})-(\\d{2})-(\\d{2})" **#1 정규표현식 패턴 정의**
matches = re.findall(pattern, data) **#2 findall 함수 사용**
return [(int(year), int(month), int(day)) for year, month, day in matches]
**#3 결과 반환**
정규표현식 패턴 정의
정규표현식을 사용하여 날짜 패턴을 찾아내고, 이를 기반으로 날짜를 추출합니다.
findall 함수 사용
주어진 패턴과 일치하는 모든 문자열을 찾아 리스트로 반환합니다.
결과 반환
매치된 결과를 반복하여 연, 월, 일을 추출하고 이를 정수로 변환한 후 튜플로 묶어 리스트로 반환합니다.
re.findall 함수
기본 형태: re.findall()
개념: 주어진 문자열에서 정규표현식 패턴과 일치하는 모든 문자열을 찾아 리스트로 반환합니다.
import re
# 정규표현식 패턴 설정
pattern = r"\\d+" # 숫자들을 찾는 패턴
# 주어진 문자열
text = "문자열 내에는 123 숫자들이 있습니다. 또한 456 다른 숫자도 있습니다."
# findall 함수를 사용하여 패턴 찾기
result = re.findall(pattern, text)
리스트 컴프리헨션
기본 형태: [i for in data]
개념: 반복문과 조건문을 한 줄에 표현하여 리스트를 생성할 수 있는 방식입니다.
# 주어진 데이터
num = [1, 2, 3, 4, 5]
# 주어진 데이터를 제곱한 리스트
squared_num = [x**2 for x in num]
print(squared_num) # 출력: [1, 4, 9, 16, 25]
import re
def solution(data):
**#1 정규표현식 패턴 정의 및 findall 함수 사용**
p = re.findall(r'[0-9]+-[0-9]+-[0-9]+', data)
return [tuple(map(int, i.split('-'))) for i in p] **#2 결과 반환**
정규표현식 패턴 정의 및 findall 함수 사용
정규표현식을 사용하여 날짜 패턴을 찾아내고, 이를 기반으로 날짜를 추출합니다. 그 후 주어진 패턴과 일치하는 모든 문자열을 찾아 리스트로 반환합니다.