defsolution(new_id): answer = '' answer = new_id.lower() temp ='' for s in answer: if s.isalnum() or s=='-'or s=='_'or s=='.': temp+=s answer=temp temp=answer[0] for i inrange(1,len(answer)): if answer[i-1]=='.'and answer[i]=='.': continue temp+=answer[i] answer=temp.strip('.') if answer=='': answer+='a' iflen(answer)>=16: answer=answer[0:15] if answer[-1]=='.': answer=answer[:len(answer)-1] whilelen(answer)<=2: answer+=answer[-1] return answer
파이썬의 문자열을 다룰 수 있는가를 물어보는 문제이다
lower()은 문자열을 바꾸는게 아니라 바뀐 문자열을 리턴함수이다
회고
1 2 3 4 5 6 7 8 9 10 11 12 13
import re
defsolution(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'iflen(st) == 0else st[:15] st = re.sub('^[.]|[.]$', '', st) st = st iflen(st) > 2else st + "".join([st[-1] for i inrange(3-len(st))]) return st