본문 바로가기
Python/Python FAQ

Python 문자열의 뒷부분에서 부분 문자열을 어떻게 제거하나요 (문자열의 접미사를 제거하나요)?, How do I remove a substring from the end of a string (remove a suffix of the string)?

by 베타코드 2023. 9. 19.
반응형

질문


다음과 같은 코드가 있습니다:

url = 'abcdc.com'
print(url.strip('.com'))

원래 예상한 결과: abcdc

실제로 얻은 결과: abcd

이제 다음을 시도합니다

url.rsplit('.com', 1)

더 나은 방법이 있을까요?


첫 번째 시도가 무엇을 하는지에 대한 구체적인 설명은 Python에서 .strip/.rstrip/.lstrip 문자열 메서드가 어떻게 작동하는지에 대한 질문을 참조하세요.


답변


strip은 "이 부분 문자열을 제거하라"는 의미가 아닙니다. x.strip(y)y를 문자 집합으로 취급하고 x의 양 끝에서 해당 집합에 속하는 문자를 제거합니다.

Python 3.9 이상에서는 removeprefixremovesuffix 메서드를 사용하여 문자열의 양쪽에서 전체 부분 문자열을 제거할 수 있습니다:

url = 'abcdc.com'
url.removesuffix('.com')    # 'abcdc'를 반환합니다
url.removeprefix('abcdc.')  # 'com'을 반환합니다

관련 Python Enhancement Proposal은 PEP-616입니다.

Python 3.8 이하에서는 endswith와 슬라이싱을 사용할 수 있습니다:

url = 'abcdc.com'
if url.endswith('.com'):
    url = url[:-4]

또는 정규 표현식을 사용할 수 있습니다:

import re
url = 'abcdc.com'
url = re.sub('\.com$', '', url)
반응형

댓글