반응형
두 번째 '-'문자가 나오기 전에 텍스트를 분할해야합니다. 지금 내가 가진 것은 일관되지 않은 결과를 생성하는 것입니다. 나는 rsplit
의 다양한 조합을 시도하고 결과없이 SO에 대한 다른 솔루션을 읽고 시도했습니다.
분할 할 샘플 파일 이름 : data.filename
에 반환 된 'some-sample-filename-to-split'
. 이 경우에는 'some-sample'
만 반환하고 싶습니다.
fname, extname = os.path.splitext(data.filename)
file_label = fname.rsplit('/',1)[-1]
file_label2 = file_label.rsplit('-',maxsplit=3)
print(file_label2,'\n','---------------','\n')
해결 방법
다음과 같이 할 수 있습니다.
>>> a = "some-sample-filename-to-split"
>>> "-".join(a.split("-", 2)[:2])
'some-sample'
a.split ( "-", 2)
는 -
의 두 번째 발생까지 문자열을 분할합니다.
a.split ( "-", 2) [: 2]
는 목록의 처음 2 개 요소를 제공합니다. 그런 다음 처음 두 요소를 결합하면됩니다.
또는
정규 표현식을 사용할 수 있습니다 : ^ ([\ w] +-[\ w] +)
>>> import re
>>> reg = r'^([\w]+-[\w]+)'
>>> re.match(reg, a).group()
'some-sample'
수정 : 의견에서 논의한 바와 같이 다음이 필요합니다.
def hyphen_split(a):
if a.count("-") == 1:
return a.split("-")[0]
else:
return "-".join(a.split("-", 2)[:2])
>>> hyphen_split("some-sample-filename-to-split")
'some-sample'
>>> hyphen_split("some-sample")
'some'
참조 페이지 https://stackoverflow.com/questions/36300158
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python : 파일 이름에 문자열 (metachar?)이 포함됨 (0) | 2020.11.06 |
---|---|
파이썬 Python "if X == Y 및 Z"구문 (0) | 2020.11.06 |
파이썬 argmax 이해 (0) | 2020.11.06 |
파이썬 fileConfig ()에 의해 구성된 핸들러 제거 / 검사 / 수정 로깅 (0) | 2020.11.06 |
파이썬 열 이름 대신 열 인덱스로 데이터 프레임의 열 호출-Pandas (0) | 2020.11.05 |
댓글