반응형
문자열에서 접두사 제거
이 질문에 이미 답변이 있습니다.
나는 명확한 파이썬 방식으로 다음을 시도하고 있습니다.
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
참고로 str
는 str
유형을 가리기 때문에 변수에 대한 잘못된 이름입니다 .
참고 URL : https://stackoverflow.com/questions/16891340/remove-a-prefix-from-a-string
반응형
'code' 카테고리의 다른 글
UIScrollview가 터치 이벤트를 가져옵니다. (0) | 2020.10.31 |
---|---|
사용하지 않고 C ++ 11에서 다중 스레드 안전 싱글 톤을 구현하는 방법 (0) | 2020.10.31 |
forEach 루프 Java 8 for Map 항목 세트 (0) | 2020.10.31 |
C의 문자열 패딩 (0) | 2020.10.31 |
md5 해시 바이트 배열을 문자열로 변환 (0) | 2020.10.31 |