code

문자열에서 접두사 제거

codestyles 2020. 10. 31. 09:43
반응형

문자열에서 접두사 제거


이 질문에 이미 답변이 있습니다.

나는 명확한 파이썬 방식으로 다음을 시도하고 있습니다.

def remove_prefix(str, prefix):
    return str.lstrip(prefix)

print remove_prefix('template.extensions', 'template.')

이것은 다음을 제공합니다.

xtensions

내가 기대했던 것이 아닙니다 ( extensions). 내가 lstrip을 잘못 사용했기 때문에 당연히 (멍청한) lstrip은 전달 된 chars문자열에 나타나는 모든 문자를 제거합니다. 해당 문자열을 실제 문자열로 간주하지 않고 "문자열의 시작 부분에서 제거 할 문자 집합"으로 간주합니다. .

문자열의 시작 부분에서 부분 문자열을 제거하는 표준 방법이 있습니까?


나는 "표준 방식"에 대해 모른다.

def remove_prefix(text, prefix):
    if text.startswith(prefix):
        return text[len(prefix):]
    return text  # or whatever

짧고 달다:

def remove_prefix(text, prefix):
    return text[text.startswith(prefix) and len(prefix):]

(조금 늦음)

def remove_prefix(s, prefix):
    return s[len(prefix):] if s.startswith(prefix) else s

이를 위해 str유형의 방법을 사용할 수 있다고 생각합니다 . 정규식이 필요하지 않습니다.

def remove_prefix(text, prefix):
    if text.startswith(prefix): # only modify the text if it starts with the prefix
         text = text.replace(prefix, "", 1) # remove one instance of prefix
    return text

정규식 솔루션 (가장 좋은 방법은 @Elazar의 솔루션입니다. 이것은 재미를위한 것입니다)

import re
def remove_prefix(text, prefix):
    return re.sub(r'^{0}'.format(re.escape(prefix)), '', text)

>>> print remove_prefix('template.extensions', 'template.')
extensions

def remove_prefix(str, prefix):
    if str.startswith(prefix):
        return str[len(prefix):]
    else:
        return str

참고로 strstr유형을 가리기 때문에 변수에 대한 잘못된 이름입니다 .

참고 URL : https://stackoverflow.com/questions/16891340/remove-a-prefix-from-a-string

반응형