본문 바로가기
파이썬

파이썬 두 번째 문자 발생 후 텍스트 분할

by º기록 2020. 11. 6.
반응형

두 번째 '-'문자가 나오기 전에 텍스트를 분할해야합니다. 지금 내가 가진 것은 일관되지 않은 결과를 생성하는 것입니다. 나는 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

 

 

반응형

댓글