문제링크: 신규 아이디 추천
✍🏻 Information
| content | |
|---|---|
| 언어 | python |
| 난이도 | ⭐️ |
| 풀이시간 | 25분 |
| 제출횟수 | 2 |
| 인터넷검색유무 | yes |
🍒 My Code
import re
def solution(new_id):
#1
new_id = new_id.lower()
#2
char = "~!@#$%^&*()=+[{]}:?,<>/"
for c in char:
if new_id.find(c)!=-1:
new_id = new_id.replace(c,"")
#3
new_id = re.sub("[.]{2,}", ".", new_id)
#4
new_id = new_id.strip(".")
#5
if len(new_id)==0:
new_id = "a"
#6
if len(new_id)>=16:
new_id = new_id[:15]
if new_id[-1]==".":
new_id = new_id[:14]
#7
if len(new_id)<=2:
new_id+=new_id[-1]*(3-len(new_id))
return new_id
💡 What I learned
strip(): 문자열의 맨 앞과 맨 끝에 있는 필요없는 문자를 삭제해주는 메소드삭제하고싶은 문자가 여러 개인 경우 strip메소드에 그만큼의 인수를 추가해주면 된다.text.strip("."",")lstrip : 왼쪽 끝단의 불필요한 문자열을 삭제rstip : 오른쪽 끝단의 불필요한 문자열을 삭제str.replace(치환하고 싶은 문자열, 새로운 문자, 치환 횟수) : 새로운 문자에 ""을 입력함으로써 replace메소드로 지정 문자열을 삭제가능정규식 규칙

re.sub(pattern, repl, string) : string 에서 pattern 을 찾아서 repl 로 치환. 문자 그대로를 의미하고 싶다면 [.]로 써줘야한다.<이전코드>
import re
def solution(new_id):
answer = ''
#1
answer = new_id.lower()
#2
char = "~!@#$%^&*()=+[{]}:?,<>/"
for x in range(len(char)):
answer = answer.replace(char[x],"")
#answer = re.sub('[^0-9a-z-_.]', '', answer)
#3
answer = re.sub('((.)\\2{1,})', '.', answer)
#4
answer = answer.strip(".")
#5
if answer=="":
answer='a'
#6
if len(answer)>=16:
answer = answer[0:15]
answer = answer.rstrip(".")
#7
if len(answer)<=2:
answer = answer+(answer[len(answer) - 1]*(3-len(answer)))
return answer
잘보고갑니다 ~ 🫶🏻