[python] 파이썬에서 문자열 끝에서 부분 문자열을 어떻게 제거합니까?

다음 코드가 있습니다.

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

기대했다: abcdc

나는 얻었다 : abcd

지금은

url.rsplit('.com', 1)

더 좋은 방법이 있습니까?



답변

strip“이 하위 문자열 제거”를 의미하지는 않습니다. 문자 집합으로 x.strip(y)취급 y하고의 끝에서 해당 문자 집합을 제거합니다 x.

대신 다음을 사용 endswith하고 슬라이싱 할 수 있습니다 .

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

또는 정규 표현식 사용 :

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


답변

문자열이 끝에 만 나타나는 것이 확실한 경우 가장 간단한 방법은 ‘바꾸기’를 사용하는 것입니다.

url = 'abcdc.com'
print(url.replace('.com',''))


답변

def strip_end(text, suffix):
    if not text.endswith(suffix):
        return text
    return text[:len(text)-len(suffix)]


답변

아무도 이것을 지적하지 않은 것처럼 보이기 때문에 :

url = "www.example.com"
new_url = url[:url.rfind(".")]

이것은 split()새로운리스트 객체가 생성되지 않을 때 사용하는 방법보다 효율적이어야하며 ,이 솔루션은 여러 개의 점이있는 문자열에서 작동합니다.


답변

URL에 대해 알고있는 것과 정확히 무엇을 시도하는지에 따라 다릅니다. 항상 ‘.com'(또는 ‘.net’또는 ‘.org’)으로 끝나는 것을 알고 있다면

 url=url[:-4]

가장 빠른 솔루션입니다. 좀 더 일반적인 URL이라면 파이썬과 함께 제공되는 urlparse 라이브러리를 살펴 보는 것이 좋습니다.

반면에 마지막 ‘.’이후에 모든 것을 제거하고 싶을뿐입니다. 문자열로

url.rsplit('.',1)[0]

작동합니다. 또는 첫 번째 ‘.’까지 모든 것을 원한다면 다음 시도

url.split('.',1)[0]


답변

그것이 확장이라는 것을 알고 있다면

url = 'abcdc.com'
...
url.rsplit('.', 1)[0]  # split at '.', starting from the right, maximum 1 split

이것은와 동일하게 작동 abcdc.com하거나 www.abcdc.com또는 abcdc.[anything]더 확장이다.


답변

한 줄로 :

text if not text.endswith(suffix) or len(suffix) == 0 else text[:-len(suffix)]