하루한줄 코딩일기
[Python] 정규표현식 re.sub을 이용한 문자열 치환하기 본문
정규표현식 re.sub()
파이썬에서 정규 표현식을 활용할 땐 re 모듈을 사용한다. 이 중 sub 메소드는 정규식을 이용해 문자열을 치환하는 방법이다.
형식은 다음과 같다.
re.sub(pattern, replace, text)
: text 중 pattern에 해당하는 부분을 replace로 대체한다.
다양한 정규식 패턴 표현
활용 예시
같은 문제를 정규식을 사용하지 않고(위), 그리고 사용하고(아래) 작성한 코드이다. 정규식을 활용한 풀이가 훨씬 간단하고 가독성이 좋다는 것을 확인할 수 있다. ... 문제보기
def solution(new_id):
answer = ""
#1단계
new_id = new_id.lower()
#2단계
for n in new_id:
if n.islower() or n.isdigit() or n in ['-','_','.']:
answer+=n
#3단계
while ".." in answer:
answer = answer.replace('..','.')
#4단계
if answer.startswith('.'):
answer = answer[1:]
if answer.endswith('.'):
answer = answer[:-1]
#5단계
if answer == "":
answer = "a"
#6단계
if len(answer) >= 16:
answer = answer[:15]
if answer.endswith('.'):
answer = answer[:-1]
#7단계
while len(answer) <= 2:
answer += answer[-1]
return answer
import re
def solution(new_id):
st = new_id
st = st.lower() #1단계
st = re.sub('[^a-z0-9\-_.]', '', st) #2단계
st = re.sub('\.+', '.', st) #3단계
st = re.sub('^[.]|[.]$', '', st) #4단계
st = 'a' if len(st) == 0 else st[:15] #5&6단계
st = re.sub('^[.]|[.]$', '', st) #6단계
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])#7단계
return st
2단계 알파벳 소문자(a-z), 숫자(0-9), 빼기/밑줄/마침표(\-_.)가 아닌(^) 경우, ''로 대체하여 제거한다.
3단계 마침표(\.)가 반복될(+) 경우, '.'로 대체한다.
4단계/6단계 마침표로 시작(^[.]) 혹은(|) 마침표로 끝날([.]$) 경우, ''로 대체하여 제거한다.
'Languages. > Python' 카테고리의 다른 글
[Python] 순열(permutations)과 조합(combinations) 구현하기 (0) | 2022.02.14 |
---|---|
[Python] TypeError: 'dict_values' object is not subscriptable (0) | 2022.02.02 |
[Python] input()과 sys.stdin.readline()의 차이 (0) | 2022.01.27 |
[Python] TypeError: 'int' object is not callable (0) | 2022.01.26 |
Comments