복붙노트

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

PYTHON

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

다음 코드가 있습니다.

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

나는 예상했다 : abcdc

내가 가진 : abcd

지금 나는 해.

url.rsplit('.com', 1)

더 좋은 방법이 있습니까?

해결법

  1. ==============================

    1.strip은 "이 하위 문자열 제거"를 의미하지 않습니다. x.strip (y)는 y를 문자 집합으로 처리하고 해당 집합의 문자를 x의 끝에서 제거합니다.

    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)
    
  2. ==============================

    2.문자열이 마지막에 표시된다고 확신하는 경우 가장 간단한 방법은 '바꾸기'를 사용하는 것입니다.

    문자열이 마지막에 표시된다고 확신하는 경우 가장 간단한 방법은 '바꾸기'를 사용하는 것입니다.

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

    3.

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

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

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

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

    이것은 새 목록 객체가 생성되지 않으므로 split ()을 사용하는 방법보다 효율적이어야하며이 솔루션은 여러 점이있는 문자열에 대해 작동합니다.

  5. ==============================

    5.귀하가 귀하의 귀하의 URL에 대해 알고있는 것과 귀하가하려는 것을 정확하게 결정합니다. '.com'(또는 '.net'또는 '.org')로 끝나는 것을 알고 있다면

    귀하가 귀하의 귀하의 URL에 대해 알고있는 것과 귀하가하려는 것을 정확하게 결정합니다. '.com'(또는 '.net'또는 '.org')로 끝나는 것을 알고 있다면

     url=url[:-4]
    

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

    당신이 다른 한편으로는 당신은 단순히 마지막 '후에 모든 것을 제거하기를 원한다.' 다음에 문자열로

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

    작동합니다. 아니면 모든 것을 첫 번째 '.' 시도한 다음

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

    6.어때요 [: - 4]?

    어때요 [: - 4]?

  7. ==============================

    7.한 줄에 :

    한 줄에 :

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

    8.확장 기능을 알고 있다면

    확장 기능을 알고 있다면

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

    이는 abcdc.com 또는 www.abcdc.com 또는 abcdc. [anything]과 동일하게 작동하며 확장 성이 뛰어납니다.

  9. ==============================

    9.URL의 경우 (주어진 예제에 의해 주제의 일부로 보이는 것처럼), 다음과 같이 할 수 있습니다 :

    URL의 경우 (주어진 예제에 의해 주제의 일부로 보이는 것처럼), 다음과 같이 할 수 있습니다 :

    import os
    url = 'http://www.stackoverflow.com'
    name,ext = os.path.splitext(url)
    print (name, ext)
    
    #Or:
    ext = '.'+url.split('.')[-1]
    name = url[:-len(ext)]
    print (name, ext)
    

    둘 다 출력됩니다. ( 'http : //www.stackoverflow', '.com')

    ".com"이나 기타 특정 항목을 분할해야하는 경우 str.endswith (접미사)와 결합 할 수도 있습니다.

  10. ==============================

    10.

    import re
    
    def rm_suffix(url = 'abcdc.com', suffix='\.com'):
        return(re.sub(suffix+'$', '', url))
    

    이 표현을 가장 표현 방법으로 반복하고 싶습니다. 물론, 다음은 CPU 시간이 적을 것입니다.

    def rm_dotcom(url = 'abcdc.com'):
        return(url[:-4] if url.endswith('.com') else url)
    

    그러나 CPU가 병 목인 경우 왜 파이썬으로 작성합니까?

    CPU가 어쨌든 병목 일 때는 언제입니까 ?? 어쩌면 운전자들에게.

    정규 표현식을 사용하면 코드를 재사용 할 수 있다는 장점이 있습니다. 만약 당신이 다음에 '.me'을 제거하기를 원한다면, 3 문자 만 있습니다.

    같은 코드가 트릭을합니다.

    >>> rm_sub('abcdc.me','.me')
    'abcdc'
    
  11. ==============================

    11.그렇지 않다.

    그렇지 않다.

    당신이 실제로 써야 할 것은

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

    , 그리고 그것은 꽤 간명 IMHO 보인다.

    그러나 하나의 매개 변수 만 사용하기 때문에 개인적인 선호도는 다음과 같습니다.

    url.rpartition('.com')[0]
    
  12. ==============================

    12.이것은 정규 표현식에 완벽한 사용법입니다 :

    이것은 정규 표현식에 완벽한 사용법입니다 :

    >>> import re
    >>> re.match(r"(.*)\.com", "hello.com").group(1)
    'hello'
    
  13. ==============================

    13.또는 split을 사용할 수 있습니다.

    또는 split을 사용할 수 있습니다.

    a = 'abccomputer.com'
    res = a.split('.com',1)[0]
    
  14. ==============================

    14.

    def remove_file_type(infile):
    import re
    return(re.sub('\.[^.]*$','',infile))
    remove_file_type('abc.efg')'abc'
    
  15. ==============================

    15.제 경우에는 예외를 발생시켜야했습니다.

    제 경우에는 예외를 발생시켜야했습니다.

    class UnableToStripEnd(Exception):
        """A Exception type to indicate that the suffix cannot be removed from the text."""
    
        @staticmethod
        def get_exception(text, suffix):
            return UnableToStripEnd("Could not find suffix ({0}) on text: {1}."
                                    .format(suffix, text))
    
    
    def strip_end(text, suffix):
        """Removes the end of a string. Otherwise fails."""
        if not text.endswith(suffix):
            raise UnableToStripEnd.get_exception(text, suffix)
        return text[:len(text)-len(suffix)]
    
  16. ==============================

    16.확장 기능 만 제거하려는 경우

    확장 기능 만 제거하려는 경우

    url = 'abcdc.com'
    print('.'.join(url.split('.')[:-1]))
    

    파일 확장자는 파일 이름에도 존재할 수있는 다른 점들과 함께 작동합니다. 단순히 문자열을 점으로 나열하여 마지막 요소없이 조인합니다.

    아마도 가장 빠르지는 않지만 나에게는 다른 방법보다 읽기 쉽습니다.

  17. from https://stackoverflow.com/questions/1038824/how-do-i-remove-a-substring-from-the-end-of-a-string-in-python by cc-by-sa and MIT license