⇒ 정규표현식 사용
import re
def solution(new_id):
answer = ''
#대문자를 소문자로 치환
new_id = new_id.lower()
#소문자,숫자,-,_,.제외
new_id = re.sub('[^0-9a-z-_.]','',new_id)
#.가 2번 이상 반복 -> 하나로 치환
new_id = re.sub('[.]{2,}','.',new_id)
#.가 처음이나 끝에 위치하는 경우 제거
new_id = re.sub('^\.|\.$','',new_id)
#빈 문자열인 경우 a를 대입
new_id = 'a' if len(new_id) == 0 else new_id
#길이가 16이상이면 15뒤 제거
new_id = new_id[:15] if len(new_id)>=16 else new_id
#끝에 . 있으면 제거
new_id = re.sub('\.$', '', new_id)
#길이2 이하이면 마지막 문자를 길이가 3될때까지 반복
new_id = new_id+new_id[-1]*(3-len(new_id)) if len(new_id)<=2 else new_id
return new_id
⇒ 헷갈린 개념 :
^원하는 문자
형식으로 써야함⇒ 개선사항
[.]{2,}
를 \.+
로 바꿀 수 있음 (한번으로 치환가능하므로)new_id = re.sub('[.]$', '', new_id[:15])
로 한꺼번에 처리가능import re
def solution(new_id):
st = new_id
st = st.lower()
st = re.sub('[^a-z0-9\-_.]', '', st)
st = re.sub('\.+', '.', st)
st = re.sub('^[.]|[.]$', '', st)
st = 'a' if len(st) == 0 else st[:15]
st = re.sub('^[.]|[.]$', '', st)
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
return st
from re import sub
def solution(new_id):
new_id = new_id.lower()
new_id = sub("[^a-z0-9-_.]", "", new_id)
new_id = sub("\.+", ".", new_id)
new_id = sub("(^\.|\.$)", "", new_id)
new_id = new_id if new_id else "a"
new_id = sub("\.$", "", new_id[:15])
new_id = new_id if len(new_id) > 3 else new_id + new_id[-1] * (3 - len(new_id))
return new_id