2022년 11월 14일 월요일

파이썬 removeprefix, removesuffix 와 lstrip, rstrip (3.9이상)

removeprefix, removefix

파이썬 3.9에서 removeprefix와 removeprefix 함수가 추가 되었습니다. 얼핏보면 이 함수들은 기존의 lstrip과 rstrip함수와 달라보이지는 않습니다.

그런데 이 strip함수는 하나만 잘라내는게 아니라 전부 잘라냅니다. 아래의 예제를 보시면 이해가 쉽습니다.

s = 'xyzxyzxyzxyz123123'
print (s.lstrip('xyz'))
print (s.removeprefix('xyz'))

print (s.rstrip('123'))
print (s.removesuffix('123'))

# 123123123
# xyzxyzxyz123123123

# xyzxyzxyzxyz
# xyzxyzxyzxyz123123

strip함수는 1번만 잘라내는게 아니라 전부 잘라내기 때문에 의도와는 다르게 쓰일 수 있습니다. 그렇다면 파이썬 3.9이하에서는 어떻게 할까요? 

startswith와 endswith함수로 확인하고, [:] 함수를 이용해서 해당 부분만 잘라냅니다. 조금 번거롭지만 위 함수들을 이용하면, 동일한 효과를 얻을 수가 있습니다.

def removeprefix_alt(text,prefix):
    if text.startswith(prefix):
        text_new = text[len(prefix):]
    else:
        text_new = text
    return text_new

def removesuffix_alt(text,suffix):
    if text.startswith(suffix):
        text_new = text[:-len(suffix)]
    else:
        text_new = text
    return text_new    

s = 'xyzxyzxyzxyz123123123'
print (s.lstrip('xyz'))
print (removeprefix_alt(s,'xyz'))
print (s.rstrip('123'))
print (removesuffix_alt(s,'xyz'))

# prefix
# 123123123
# xyzxyzxyz123123123

# suffix
# xyzxyzxyzxyz
# xyzxyzxyzxyz123123

이상으로 파이썬 3.9에 추가된 removeprefix, removesuffix함수들을 정리 해 보았습니다

댓글 없음:

댓글 쓰기