Link : 프로그래머스 > 2021 KAKAO BLIND RECRUITMENT > 신규 아이디 추천
Language : Python3
💡 문자열(String) - 특정 문자열 제거
💡 정규식(regex)
import re
def solution(new_id):
# step1 : 소문자 치환
new_id = new_id.lower()
# step2 : 소문자, 숫자, -, _, .를 제외한 모든 문자를 제거
new_id = re.sub(r"[^a-z0-9._-]+", '', new_id)
# step3 : 연속된 마침표 치환
new_id = re.sub(r"[.]+", '.', new_id)
# step4 : 양 끝단의 마침표 제거
new_id = new_id.strip('.')
# step5 : 빈 문자열이라면, a를 대입
new_id = 'a' if len(new_id) == 0 else new_id
# step6 : 15개 문자를 제외한 나머지 문자 모두제거.
new_id = new_id[:15].rstrip('.')
# step7 : new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복
new_id += new_id[-1]*(3-len(new_id))
answer = new_id
return answer
step5
파이썬에서 빈 문자열을 확인하는 방법
(1) not 연산자 사용
(2) len() 함수 사용
(3) not + string.strip() 사용
(4) not + string.isspace() 사용
step6
"new_id의 길이가 16자 이상이면" 이라는 조건이 붙어있지만,
if len(new_id) >= 16
이라는 조건식을 붙여줄 필요가 없습니다.
String 의 길이가 15보다 짧은 경우에는 해당 len(string)을 stop index로 사용하기 때문입니다.
step7
재귀를 사용하기보다 파이썬의 string multiplication 을 사용하면 훨씬 간결해집니다.
파이썬에서 정규표현식을 사용할 때, 내장 모듈인 re를 사용합니다.
문자열 검색이나 치환작업을 간편하게 처리하는 정규표현식을 복습합니다.
정규표현식 문법
[
: 문자 class 시작
]
: 문자 class 끝
^
: 부정
+
: 패턴이 1번이상 등장함
다양한 정규 표현식 패턴 예시
1자리 숫자 : "[0123456789]"
혹은 "[0-9]"
혹은 r"[\d]"
혹은 r"\d"
2자리 숫자 : "[0123456789][0123456789]"
혹은 "[0-9][0-9]"
혹은 "\d\d"
3자리 숫자 : r"\d\d\d"
혹은 r"\d{3}"
2자리~4자리 숫자 - r"\d{2,4}"
휴대폰 번호 : r"010[1-9]\d{7}"
알파벳 소문자 1글자 : [a-z]